更正CloudFront对象的失效路径

时间:2016-06-25 13:09:06

标签: amazon-web-services amazon-cloudfront invalidation

我试图弄清楚对象在CloudFront分配上失效的正确路径。

CloudFront配置了备用域名*.example.com

棘手的部分是我在EC2上设置了一个使用HAProxy进行路径重写的自定义源。

请求

mysubdomain.example.com/icon.png

被重写为

s3.amazonaws.com/examplebucket/somedirectory/mysubdomain/icon.png

然后将结果返回到CloudFront。 (因此,路径和主机都被重写)

现在,在发送失效请求时,我无法确定此对象的正确路径。 (我不想使用版本控制,因为我需要文件名保持不变)

我已尝试使用以下配置,但它似乎无法正常工作。创建并处理失效,但没有效果。

const invalidationParams = {
  DistributionId: 'MY_DISTRIBUTION_ID',
  InvalidationBatch: {
    CallerReference: 'SOME_RANDOM_STRING',
    Paths: {
      Quantity: 1,
      Items: [
        '/somedirectory/mysubdomain/icon.png'
      ]
    }
  }
}

由于只指定了PATH(相对于发行版),并且无法在失效配置中指定完整的URL,是否会使此配置中的对象无效?

1 个答案:

答案 0 :(得分:1)

CloudFront失效根据浏览器的要求,考虑与路径规范匹配的每个对象。要使http://example.com/cat.jpg无效,请指定以下内容之一:

cat.jpg
/cat.jpg

前导斜杠是可选的,但如果不存在则暗示。

路径是失效请求接受的唯一值。

对于每个边缘位置,与该路径匹配的对象的每个副本 - 不管备用域名或与其关联的其他属性 - 都将被驱逐。

请注意,“匹配该路径的对象的每个副本”可能会让某些人感到困惑,因为假设可能只有一个副本与给定路径匹配,但这不正确。 CloudFront缓存“相同”对象的不同副本,具体取决于将哪些请求参数转发到源。如果转发查询字符串,cookie,白名单标题等,则将缓存“相同”对象的许多副本,因为缓存要求缓存假设如果转发的请求参数变化,则响应将变化。这就是为什么默认转发这么少 - 它有助于你的命中率,因为它降低了任何给定请求看起来对缓存逻辑“独特”的可能性。