我正在尝试学习如何使用AWS来开发Web应用程序,并遵循本研讨会Build a Modern Web Application
我必须更新s3存储桶策略,因此按照B节中的说明,我用创建的存储桶名称REPLACE_ME_BUCKET_NAME
替换了JSON文件中的字符串mythicalbucket1
,这是我得到的错误:
调用PutBucketPolicy操作时发生错误(MalformedPolicy):策略中的主体无效。
这是JSON文件:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity REPLACE_ME_CLOUDFRONT_ORIGIN_ACCESS_IDENTITY_ID"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mythicalbucket1"
}
]
}
我尝试阅读有关存储桶策略的文档,并且由于我必须允许公众(或所有人)访问,因此我将Principal
的值替换为*
,这再次给出了另一个错误。 / p>
看JSON文件,我假设REPLACE_ME_CLOUDFRONT_ORIGIN_ACCESS_IDENTITY_ID
必须替换为某些CloudFront ID,但是不确定在这种情况下是否需要这样做。
我确实浏览了有关CloudFront ID和存储桶策略的各种文档,但是一切仍然令人困惑。希望对此有所帮助。
答案 0 :(得分:1)
该讲习班随附的文件似乎引用了Amazon CloudFront的使用。但是,说明中没有提及。
因此,您应该简单地使用:"Principal": "*"
另外,请注意,此行的末尾应有一个/*
:
"Resource": "arn:aws:s3:::REPLACE_ME_BUCKET_NAME/*"
请确保您的存储桶名称后面还有/*
。