在AWS CLI上调用CreateInvalidation操作时访问被拒绝

我正在尝试创build一个命令,在推出新代码时使CloudFront分发无效。 这是一个尝试解决新推出的HTML不需要24小时出现在我的networking应用程序的问题。 这个想法来自于这个AWS CLI COMMAND REFERENCE

这里是命令:

aws cloudfront create-invalidation --distribution-id XXXXXXXXXXXXXX --invalidation-batch file://invbatch.json 

这是我运行命令时得到的响应:

调用CreateInvalidation操作时发生客户端错误(AccessDenied):用户:arn:aws:iam :: XXXXXXXXXXXXXX:user / cats-kittens-beanstalk-user无权执行:cloudfront:CreateInvalidation

任何想法,为什么这可能是? 我知道,即使用户有权在某些情况下运行命令,AWS也会抛出此访问被拒绝 – 请参阅此处 。

IAM策略不允许限制访问特定的CloudFront分配。 解决scheme是为资源使用通配符,而不是仅引用特定的CloudFront资源。 添加到您的IAM政策将解决您遇到的问题。

以下是IAM政策工作中的一个例子:

 { "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "cloudfront:CreateInvalidation", "cloudfront:GetInvalidation", "cloudfront:ListInvalidations" ], "Resource": "*" } ] } 

文档:

  • 适用于IAM的AWS服务
  • CloudFront API权限
  • 为CloudFront使用基于标识的策略(IAM策略)