存储桶策略中的主体无效

时间:2019-03-20 04:51:23

标签: amazon-web-services amazon-s3

我正在尝试学习如何使用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和存储桶策略的各种文档,但是一切仍然令人困惑。希望对此有所帮助。

1 个答案:

答案 0 :(得分:1)

该讲习班随附的文件似乎引用了Amazon CloudFront的使用。但是,说明中没有提及。

因此,您应该简单地使用:"Principal": "*"

另外,请注意,此行的末尾应有一个/*

"Resource": "arn:aws:s3:::REPLACE_ME_BUCKET_NAME/*"

请确保您的存储桶名称后面还有/*