控制起始请求 - Amazon CloudFront
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

控制起始请求

当查看器请求向 CloudFront 结果 缓存错误 (所请求的对象未在边缘位置缓存), CloudFront 发送请求到原始以检索对象。这称为 起始请求. 起始请求始终包含查看器请求中的以下信息:

  • URL路径(仅限路径,无URL查询字符串或域名)

  • 请求机构(如果有一个)

  • HTTP标头 CloudFront 自动包括每个起始请求,包括 HostUser-Agent,和 X-Amz-Cf-Id.

默认情况下,来自查看器请求的其他信息(例如URL查询字符串、HTTP标头和cookies)未包含在原始请求中。但您可能希望接收来源的其他信息,例如,收集分析或遥测数据。您可以使用 起运地请求政策 控制包含在原始请求中的信息。

原始请求政策与独立于 缓存策略,控制缓存密钥。这种分离可让您在原产地接收其他信息,同时也能保持良好的信息 缓存命中率 (导致缓存命中的查看器请求的比例)。您可以单独控制包含在原始请求中的信息(使用原始请求策略),并且在缓存密钥中包含哪些信息(使用缓存策略)。

虽然两种政策是独立的,但是相关的政策是相关的。在缓存密钥(使用缓存策略)中包含的所有URL查询字符串、HTTP标头和cookies都将自动包含在原始请求中。使用原始请求政策指定您希望包含在原始请求中的信息,但是 不是 包括在缓存密钥中。与缓存策略一样,您将原始请求策略附加到一个或多个缓存行为 CloudFront 分销。

您还可以使用原始请求策略来添加其他HTTP头至未包含在查看器请求中的起始请求。这些附加标题添加到 CloudFront 发送原始请求之前,会根据查看器请求自动确定标题值。有关更多信息,请参阅 使用 CloudFront HTTP标头。)

了解原产地请求政策

CloudFront 提供一些预定义的起始请求策略,称为 管理策略,用于常用用例。您可以使用这些管理的策略,或者您可以创建特定于您需求的自己的原始请求策略。有关管理策略的更多信息,请参阅 使用管理的起始请求政策.

原始请求政策包含以下设置,该设置分类为 政策信息起始请求设置.

策略信息

姓名

标识出发地请求政策的名称。在控制台中,使用名称将原始请求策略附加到缓存行为。

Comment (注释)

描述原始请求政策的备注。该项为可选项。

起始请求设置

原始请求设置指定在请求中包含的查看器请求中的值 CloudFront 发送至原始发货人(称为原始请求)。值可以包括URL查询字符串、HTTP标头和cookies。您指定的值包含在原始请求中,但不包含在缓存密钥中。有关控制缓存密钥的信息,请参阅 控制缓存密钥.

查询字符串

查看器中的URL查询字符串请求 CloudFront 包括起始请求。对于查询字符串,您可以选择以下设置之一:

  • – 查看器请求中的查询字符串是 不是 包含在原始请求中。

  • 全部 – 查看器请求中的所有查询字符串都包含在原始请求中。

  • 白名单 – 您指定查看器请求中的查询字符串中的哪个字符串包含在原始请求中。

当您使用 白名单 设置,您可以按其名称指定查询字符串,而不是他们的值。例如,考虑以下URL路径:

/content/stories/example-story.html?split-pages=false

在这种情况下,您将查询字符串指定为 split-pages,不是 split-pages=false...但是, CloudFront 包括在原始请求中的完整查询字符串(包括其值)。

Headers

查看器中的HTTP标头请求 CloudFront 包括起始请求。对于标题,您可以选择以下设置之一:

  • – 查看器请求中的HTTP标头是 不是 包含在原始请求中。

  • 所有查看器标题 – 查看器请求中的所有HTTP标头都包含在原始请求中。

  • 白名单 – 您指定了原始请求中包含的HTTP标头。

  • 所有查看器标题和白名单CloudFront-*标头 – 查看器请求中的所有HTTP标头都包含在原始请求中。此外,您还指定了 CloudFront 您希望添加到原始请求的标题。有关 CloudFront 标题,参见 使用 CloudFront HTTP标头.

当您使用 白名单所有查看器标题和白名单CloudFront-*标头 设置,您可以按其名称指定HTTP标头,而不是他们的值。例如,考虑以下HTTP标头:

Accept-Language: en-US,en;q=0.5

在这种情况下,您将标题指定为 Accept-Language,不是 Accept-Language: en-US,en;q=0.5...但是, CloudFront 包括在原始请求中包括其值的完整标头。

Cookies

查看器中的Cookie请求 CloudFront 包括起始请求。对于Cookie,您可以选择以下设置之一:

  • – 查看器请求中的Cookie是 不是 包含在原始请求中。

  • 全部 – 查看器请求中的所有Cookie都包含在原始请求中。

  • 白名单 – 您指定了查看器请求中的Cookie中包含的原始请求中的cookie。

当您使用 白名单 设置,您可以按其名称指定cookie,而不是他们的值。例如,考虑以下内容 Cookie 标题:

Cookie: session_ID=abcd1234

在这种情况下,您将该Cookie指定 session_ID,不是 session_ID=abcd1234...但是, CloudFront 包括在原始请求中的完整cookie(包括其值)。

创建原始请求政策

您可以使用原始请求策略控制包含在请求中的值(URL查询字符串、HTTP头和cookies) CloudFront 发送至您的起点。您可以在 CloudFront 控制台,带 AWS Command Line Interface (AWS CLI),或与 CloudFront API。

创建出发地请求策略后,您将其附加到一个或多个缓存行为 CloudFront 分销。

不需要出发地请求政策。当缓存行为未附加出来请求策略时,原始请求包括在 缓存策略,但没有更多。

注意

要使用原始请求策略,缓存行为也必须使用 缓存策略. 无法在缓存行为中使用原始请求策略,而不是缓存策略。

创建原始请求政策(控制台)

  1. 登录 AWS 管理控制台 并打开 政策 页面中的 CloudFront 控制台 https://console.amazonaws.cn/cloudfront/v2/home?#/policies.

  2. 选择 起运地请求政策,然后选择 创建起始请求政策.

  3. 选择此来源请求政策的所需设置。有关更多信息,请参阅 了解原产地请求政策。)

  4. 完成后,选择 创建起始请求政策.

创建出发地请求策略后,可以将其附加到缓存行为。

将原始请求政策附加到现有分销中(控制台)

  1. 打开 分配 页面中的 CloudFront 控制台 https://console.amazonaws.cn/cloudfront/home#distributions:.

  2. 选择要更新的分布,然后选择 行为 选项卡。

  3. 选择要更新的缓存行为,然后选择 编辑.

    或者,要创建新的缓存行为,请选择 创建行为.

  4. 对于 缓存和原始请求设置,确保 使用缓存策略和原始请求策略 已选择。

  5. 对于 起运地请求政策,选择要连接到此缓存行为的原始请求策略。

  6. 在页面底部,选择 是,编辑.

将原始请求政策附加到新的分销服务(控制台)

  1. 访问 https://console.amazonaws.cn/cloudfront/home,打开 CloudFront 控制台。

  2. 选择 创建分布,然后 网络,选择 开始.

  3. 对于 缓存和原始请求设置,确保 使用缓存策略和原始请求策略 已选择。

  4. 对于 起运地请求政策,选择要连接到此分发默认缓存行为的原始请求策略。

  5. 选择所需的原始设置、默认缓存行为和分布。有关更多信息,请参阅 您创建或更新分配时指定的值。)

  6. 完成后,选择 创建分布.

要创建原始请求政策,请与 AWS Command Line Interface (AWS CLI),使用 aws cloudfront create-origin-request-policy 命令。您可以使用输入文件提供命令输入参数,而不是将每个单独参数指定为命令行输入。

创建原始请求策略(包含输入文件的CLI)

  1. 使用以下命令创建名为 origin-request-policy.yaml 包含所有输入参数的内容 create-origin-request-policy 命令。

    aws cloudfront create-origin-request-policy --generate-cli-skeleton yaml-input > origin-request-policy.yaml
    注意

    TheThethe yaml-input 选项仅在 第2版 AWS CLI. 第1版的第1版 AWS CLI,您可以生成以JSON格式生成的输入文件。有关详细信息,请参阅 从JSON或YAML输入文件生成AWSCLI骨架和输入参数AWS Command Line Interface 用户指南.

  2. 打开名为 origin-request-policy.yaml 您刚刚创建的。编辑文件以指定要要的原始请求策略设置,然后保存文件。您可以从文件中删除可选字段,但不要删除必填字段。

    有关起运地请求政策设置的更多信息,请参阅 了解原产地请求政策.

  3. 使用以下命令来创建使用来自 origin-request-policy.yaml 文件。

    aws cloudfront create-origin-request-policy --cli-input-yaml file://origin-request-policy.yaml

    记下注意事项 Id 命令输出中的值。这是起运地请求政策ID,您需要将原始请求政策附加到 CloudFront 分发缓存行为。

将原始请求策略附加到现有分发的一个已有分布(输入文件的CLI)

  1. 使用以下命令保存分配配置 CloudFront 您要更新的分布。Replace distribution_ID 配送ID。

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
    注意

    TheThethe --output yaml 选项仅在 第2版 AWS CLI. 第1版的第1版 AWS CLI,您可以生成以JSON格式输出的输出。有关详细信息,请参阅 控制AWSCLI中的命令输出AWS Command Line Interface 用户指南.

  2. 打开名为 dist-config.yaml 您刚刚创建的。编辑文件,对您正在更新的每个缓存行为进行以下更改,以使用原始请求策略。

    • 在缓存行为中,添加名为 OriginRequestPolicyId...对于字段值,请使用您在创建策略后注意到的原始请求策略ID。

    • 重命名 ETag 字段至 IfMatch,但不要更改字段值。

    完成后保存文件。

  3. 使用以下命令更新分发以使用原始请求策略。Replace distribution_ID 配送ID。

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml

将缓存策略附加到新分发中(包含输入文件的CLI)

  1. 使用以下命令创建名为 distribution.yaml 包含所有输入参数的内容 create-distribution 命令。

    aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
    注意

    TheThethe yaml-input 选项仅在 第2版 AWS CLI. 第1版的第1版 AWS CLI,您可以生成以JSON格式生成的输入文件。有关详细信息,请参阅 从JSON或YAML输入文件生成AWSCLI骨架和输入参数AWS Command Line Interface 用户指南.

  2. 打开名为 distribution.yaml 您刚刚创建的。在默认缓存行为中, OriginRequestPolicyId 字段,输入您在创建策略后注意到的原始请求策略ID。继续编辑文件以指定您想要的分发设置,然后在完成后保存文件。

    有关分发设置的详细信息,请参阅 您创建或更新分配时指定的值.

  3. 使用以下命令来创建使用来自 distribution.yaml 文件。

    aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml

要创建原始请求政策,请与 CloudFront API,使用 创建发起请求策略. 有关在此API调用中指定的字段的更多信息,请参阅 了解原产地请求政策 以及AWSSDK或其他API客户端的API参考文档。

创建原始请求策略后,可以使用以下API调用之一将其附加到缓存行为:

  • 要将其附加到现有分布中的缓存行为,请使用 更新分配.

  • 要将其附加到新分布中的缓存行为,请使用 创建分布.

对于这两个API调用,请在以下内容中提供原始请求策略ID OriginRequestPolicyId 字段,在缓存行为内。有关在这些API调用中指定的其他字段的更多信息,请参阅 您创建或更新分配时指定的值 以及AWSSDK或其他API客户端的API参考文档。