Access Denied when creating CloudFront invalidation with AWS CLI

Nat*_*ini 4 amazon-web-services amazon-cloudfront amazon-iam aws-cli

我正在使用 AWS CLI 在脚本中创建 CloudFront 分配:

aws configure set preview.cloudfront true
aws cloudfront create-invalidation --distribution-id ABCD1234 --paths '/*'
Run Code Online (Sandbox Code Playgroud)

我用这个语句设置了一个策略:

{
    "Sid": "xxx",
    "Effect": "Allow",
    "Action": [
        "cloudfront:CreateInvalidation"
    ],
    "Resource": [
        "arn:aws:cloudfront::xxx:distribution/ABCD1234"
    ]
}
Run Code Online (Sandbox Code Playgroud)

该策略附加到运行命令的用户。但是,我仍然收到此错误:

调用 CreateInvalidation 操作时出现客户端错误 (AccessDenied):用户:arn:aws:iam::xxx:user/yyy 未获授权执行:cloudfront:CreateInvalidation

Nat*_*ini 5

问题是 CloudFront 无法使用指定资源的策略。“扩大”政策修复了错误。

此支持线程指出:

CloudFront 不支持 IAM 的资源级权限。

它也隐藏在CloudFront文档中

Operation:             POST Invalidation (CreateInvalidation)
Required Permissions:  cloudfront:CreateInvalidation
Resources:             *
Run Code Online (Sandbox Code Playgroud)

这意味着政策需要是:

{
    "Sid": "xxx",
    "Effect": "Allow",
    "Action": [
        "cloudfront:CreateInvalidation"
    ],
    "Resource": [
        "*"  <-- must be a wildcard
    ]
}
Run Code Online (Sandbox Code Playgroud)