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


我正在尝试创建一个命令,在推出新代码时将使CloudFront分配无效。这是尝试解决新推出的HTML不会在我的网络应用上显示最多24小时的问题。这个想法来自于此 AWS CLI命令参考

这是命令:

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

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

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

知道为什么会这样吗?我知道AWS会拒绝此访问权限,即使用户有权在某些情况下运行命令 - 请参阅 这里


5
2017-11-09 19:29




类似: AccessDenied:用户无权执行:cloudfront:CreateInvalidation - kenorb


答案:


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

以下是工作IAM策略中的示例:

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

文档:


2
2017-08-02 21:08