Phi*_*ley 3 amazon-web-services amazon-cloudfront aws-cli
我正在尝试使用 AWS CLI 在我的 CI 服务中的 CloudFront 上创建失效,以在部署时自动使文件失效。但是,CLI 返回一条成功消息,但引用的失效是一个月前的,并且没有创建新的失效。
我正在安装和启用 cloudfront:
pip install awscli
aws configure set preview.cloudfront true
aws configure set preview.create-invalidation true
Run Code Online (Sandbox Code Playgroud)
然后我创建失效:
aws cloudfront create-invalidation --cli-input-json '{"DistributionId":"ABC123ABC123","InvalidationBatch":{"Paths":{"Quantity":1,"Items":["/index.html"]},"CallerReference":"codeship"}}'
Run Code Online (Sandbox Code Playgroud)
响应示例,当我在 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"
}
Run Code Online (Sandbox Code Playgroud)
当我登录到 CloudFront 时,我可以看到 6/12 的一次失效,但昨天运行此命令时什么也没有。
我做错了什么吗?这个 CLI API 甚至可以工作吗?
看起来您每次调用 CreateInvalidation 都传递相同的 CallerReference?CallerReference 唯一标识特定的失效请求,因此 CloudFront 为您提供第一次失效的结果以使用该 CallerReference。从文档:
您指定用于唯一标识失效请求的值。CloudFront 使用该值来防止您意外地重新提交相同的请求。无论何时创建新的失效请求,都必须为 CallerReference 指定一个新值,并根据需要更改请求中的其他值。确保 CallerReference 值唯一的一种方法是使用时间戳,例如 20120301090000。
如果您使用 CallerReference 的相同值发出第二个失效请求,并且请求的其余部分相同,则 CloudFront 不会创建新的失效请求。相反,CloudFront 会返回有关您之前使用相同 CallerReference 创建的失效请求的信息。
如果 CallerReference 是您在之前的失效批处理请求中已发送的值,但任何 Path 的内容与原始请求不同,CloudFront 将返回 InvalidationBatchAlreadyExists 错误。
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |