教程:使用函数创建简单函 CloudFront 数 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用函数创建简单函 CloudFront 数

本教程向您展示如何开始使用 CloudFront 函数。您可以创建一个简单的函数,将查看者重定向到不同的 URL,还可以返回自定义响应标头。

先决条件

要使用 CloudFront 函数,你需要一个 CloudFront 发行版。如果您没有,请按照简单 CloudFront 发行版入门中的步骤操作。

创建函数

此过程向您展示如何使用 CloudFront 控制台创建一个简单的函数,该函数将查看者重定向到其他 URL,并返回自定义响应标头。

在 CloudFront 控制台中创建函数
  1. 登录Amazon Web Services Management Console并打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home

  2. 在导航窗格中,选择函数,然后选择创建函数

  3. 创建函数页面上,在名称中输入函数名称,例如MyFunctionName

  4. (可选)在描述中,输入函数的描述,例如Simple test function

  5. 对于 Runtime,保留默认的选定 JavaScript版本。

  6. 选择创建函数

  7. 复制以下函数代码。此函数代码将查看器重定向到其他 URL,并返回自定义响应标题。

    function handler(event) { // NOTE: This example function is for a viewer request event trigger. // Choose viewer request for event trigger when you associate this function with a distribution. var response = { statusCode: 302, statusDescription: 'Found', headers: { 'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' }, 'location': { value: 'https://aws.amazon.com/cloudfront/' } } }; return response; }
  8. 对于函数代码,将代码粘贴到代码编辑器中以替换默认代码。

  9. 选择 ‬保存更改

  10. (可选)您可以在发布函数之前对其进行测试。本教程没有描述如何测试函数。有关更多信息,请参阅测试函数

  11. 选择 “发布” 选项卡,然后选择 “发布功能”。必须先发布该函数,然后才能将其与您的 CloudFront 分配相关联。

  12. 接下来,您可以将该函数与分配或缓存行为相关联。在MyFunctionName页面上,选择 “发布” 选项卡。

    警告

    在以下步骤中,选择用于测试的分发或缓存行为。请勿将此测试函数与生产中使用的分发或缓存行为相关联。

  13. 选择添加关联

  14. 在 “关联” 对话框中,选择分配和/或缓存行为。对于事件类型,请保留默认值。

  15. 选择添加关联

    关联的分配表显示了关联的分配。

  16. 等待几分钟,以便相关的分配完成部署。要检查分配的状态,请在关联的分配表中选择分配,然后选择查看分配

    当分配的状态为 Deployed(已部署)时,您即可验证函数是否正常工作。

验证函数

要查看函数的运行情况并验证它是否正常工作,请在 Web 浏览器中转到分配的域名(例如 https://d111111abcdef8.cloudfront.net)。该函数返回到浏览器的重定向,因此浏览器会自动转到 https://aws.amazon.com/cloudfront/

如果您使用 curl 之类的工具将请求发送到您的分配的域名,您将看到重定向响应 (302 Found) 和函数增加的自定义响应标头,如下面的示例中所强调的那样。

curl -v https://d111111abcdef8.cloudfront.net/ > GET / HTTP/1.1 > Host: d111111abcdef8.cloudfront.net > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 302 Found < Server: CloudFront < Date: Tue, 16 Mar 2021 18:50:48 GMT < Content-Length: 0 < Connection: keep-alive < Location: https://aws.amazon.com/cloudfront/ < Cloudfront-Functions: generated-by-CloudFront-Functions < X-Cache: FunctionGeneratedResponse from cloudfront < Via: 1.1 3035b31bddaf14eded329f8d22cf188c.cloudfront.net (CloudFront) < X-Amz-Cf-Pop: PHX50-C2 < X-Amz-Cf-Id: ULZdIz6j43uGBlXyob_JctF9x7CCbwpNniiMlmNbmwzH1YWP9FsEHg==