【问题标题】:AWS CLI for CloudFront create-invalidation returns old invalidationCloudFront 创建无效的 AWS CLI 返回旧的无效
【发布时间】:2023-03-21 16:07:01
【问题描述】:

我正在尝试使用 AWS CLI 在我的 CI 服务中的 CloudFront 上创建失效,以便在部署时自动使文件失效。但是,CLI 返回一条成功消息,但引用的失效是一个月前的,并且没有创建新的失效。

我正在安装和启用 cloudfront:

pip install awscli
aws configure set preview.cloudfront true
aws configure set preview.create-invalidation true

然后我创建失效:

aws cloudfront create-invalidation --cli-input-json '{"DistributionId":"ABC123ABC123","InvalidationBatch":{"Paths":{"Quantity":1,"Items":["/index.html"]},"CallerReference":"codeship"}}'

响应示例,当我在美国东部时间 7 月 13 日下午 4 点运行此命令时:

{
  "Invalidation": {
    "Status": "Completed",
    "InvalidationBatch": {
      "Paths": {
        "Items": [
          "/index.html"
        ],
        "Quantity": 1
      },
      "CallerReference": "codeship"
    },
    "Id": "1234567890",
    "CreateTime": "2015-06-12T18:39:56.360Z"
  },
  "Location": "https://cloudfront.amazonaws.com/2015-04-17/distribution/ABC123ABC123/invalidation/1234567890"
}

当我登录 CloudFront 时,我可以看到 6 月 12 日的一次失效,但昨天运行此命令时没有任何内容。

我做错了吗?这个 CLI API 还能用吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudfront aws-cli


    【解决方案1】:

    看起来您在每次调用 CreateInvalidation 时都传递了相同的 CallerReference? CallerReference 唯一标识特定的失效请求,因此 CloudFront 会为您提供第一次失效的结果以使用该 CallerReference。来自documentation:

    您指定的用于唯一标识失效请求的值。 CloudFront 使用该值来防止您意外重新提交相同的请求。每当您创建新的失效请求时,您必须为 CallerReference 指定一个新值,并根据需要更改请求中的其他值。确保 CallerReference 的值唯一的一种方法是使用时间戳,例如 20120301090000。

    如果您使用相同的 CallerReference 值发出第二个失效请求,并且请求的其余部分相同,则 CloudFront 不会创建新的失效请求。相反,CloudFront 返回有关您之前使用相同 CallerReference 创建的失效请求的信息。

    如果 CallerReference 是您在之前的失效批处理请求中已发送的值,但任何 Path 的内容与原始请求不同,CloudFront 将返回 InvalidationBatchAlreadyExists 错误。

    【讨论】:

    • 谢谢,效果很好。我想我应该更仔细阅读:-)
    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2018-09-18
    相关资源
    最近更新 更多