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

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

本教程介绍如何开始使用 CloudFront Functions。您可以创建一个简单的函数,以便将查看器重定向到其他 URL,并返回自定义响应标头。

先决条件

要使用 CloudFront Functions,您需要一个 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. 对于运行时,请保留默认选定的 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==