我创建了一个托管S3存储桶的静态网站,由CloudFront提供服务 . 我想仅通过Origin Access Identity从CloudFront直接限制存储桶访问 .
我试图更新S3存储桶策略,但它显示错误:
Error putting S3 policy: MalformedPolicy: Invalid principal in policy status code: 400, request id
我正在尝试使用以下政策:
resource "aws_s3_bucket_policy" "default" {
bucket = "${aws_s3_bucket.default.id}"
policy = <<EOF
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ${aws_cloudfront_origin_access_identity.origin_access_identity.id}"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::$/*"
}
]
}
EOF
}
1 回答
正如在_1179737中所提到的,最好的方法是使用_1179738生成IAM策略文档,然后直接附加它 .
一个例子看起来像这样:
如果你真的想在问题中手工制作IAM政策那么你只需要这样的东西: