我试图使用AWS在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"}}'一个响应的例子,当我在东部时间下午4点7/13上运行这个命令时:
{
"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甚至工作吗?
发布于 2015-07-14 18:26:58
看起来你每次打给CreateInvalidation都要传递相同的CreateInvalidation?CallerReference唯一地标识一个特定的失效请求,因此CloudFront给出了第一个使用该CallerReference的无效声明的结果。来自文档
指定用于唯一标识无效请求的值。CloudFront使用该值防止意外地重新提交相同的请求。无论何时创建新的失效请求,都必须为CallerReference指定一个新值,并在适用的情况下更改请求中的其他值。确保CallerReference值唯一的一种方法是使用时间戳,例如,20120301090000。 如果您为CallerReference发出了具有相同值的第二个失效请求,而如果请求的其余部分相同,则CloudFront不会创建新的失效请求。相反,CloudFront返回有关您以前用同一个CallerReference创建的无效请求的信息。 如果CallerReference是您在以前的无效批处理请求中已经发送的值,但任何路径的内容与原始请求不同,则CloudFront返回一个InvalidationBatchAlreadyExists错误。
https://stackoverflow.com/questions/31408410
复制相似问题