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

tra*_*k13 6 amazon-web-services aws-cli

我正在尝试创建一个命令,该命令将在推出新代码时使 CloudFront 分配无效。这是为了解决推出的新 HTML 不会在 24 小时内出现在我的网络应用程序上的问题。这个想法来自这个AWS CLI 命令参考

这是命令:

aws cloudfront create-invalidation --distribution-id XXXXXXXXXXXXXX --invalidation-batch file://invbatch.json
Run Code Online (Sandbox Code Playgroud)

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

调用 CreateInvalidation 操作时出现客户端错误 (AccessDenied):用户:arn:aws:iam::XXXXXXXXXXXXXXX:user/cats-kittens-beanstalk-user is notauthorized to perform: cloudfront:CreateInvalidation

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

小智 3

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

以下是有效 IAM 策略中的示例:

{
  "Statement": [  
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:CreateInvalidation",
        "cloudfront:GetInvalidation",
        "cloudfront:ListInvalidations"
      ],
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

文件: