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

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

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

先决条件

要使用 CloudFront Functions,您需要一个 CloudFront 分配。如果您还有分配,请参阅开始使用基本 CloudFront 分配

创建函数

您可以使用 CloudFront 控制台创建一个简单函数,用于将查看器重定向到其他 URL,并返回自定义响应标头。

创建 CloudFront 函数
  1. 登录 AWS Management Console,并通过以下网址打开 CloudFront 控制台:https://console.aws.amazon.com/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(已部署)时,您即可验证函数是否正常工作。

验证函数

部署该函数后,您可以验证它是否适用于分配。

验证函数
  1. 在您的 Web 浏览器中,导航到您的分配的域名(例如 https://d111111abcdef8.cloudfront.net)。

    该函数返回到浏览器的重定向,因此浏览器会自动转到 https://aws.amazon.com/cloudfront/

  2. 在命令行窗口中,您可以使用 curl 等工具,向分配的域名发送请求。

    curl -v https://d111111abcdef8.cloudfront.net/

    在响应中,您可以看到函数添加的重定向响应(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==