我使用AWS CLI在脚本中创建CloudFront分配:
aws configure set preview.cloudfront true
aws cloudfront create-invalidation --distribution-id ABCD1234 --paths '/*'
我制定了一份政策:
{
"Sid": "xxx",
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": [
"arn:aws:cloudfront::xxx:distribution/ABCD1234"
]
}
该策略附加到运行该命令的用户。但是,我仍然会收到此错误:
调用CreateInvalidation操作时发生客户端错误(AccessDenied):用户:arn:aws:iam :: xxx:用户/ yyy无权执行:cloudfront:CreateInvalidation
答案 0 :(得分:3)
问题在于CloudFront无法使用指定资源的策略。 "加宽"该政策修复了错误。
CloudFront不支持IAM的资源级权限。
它也被埋在documentation for CloudFront:
中Operation: POST Invalidation (CreateInvalidation)
Required Permissions: cloudfront:CreateInvalidation
Resources: *
这意味着政策需要:
{
"Sid": "xxx",
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": [
"*" <-- must be a wildcard
]
}