【问题标题】:Invalid principal in bucket policy存储桶策略中的主体无效
【发布时间】:2019-03-20 14:38:38
【问题描述】:

我正在尝试学习如何使用 AWS 开发 Web 应用程序并关注此研讨会 Build a Modern Web Application 我必须更新 s3 存储桶策略,因此按照 B 部分中的说明,我将 JSON 文件中的字符串 REPLACE_ME_BUCKET_NAME 替换为我创建的存储桶名称 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 的值替换为 *,这再次给出了不同的错误。

查看 JSON 文件,我假设 REPLACE_ME_CLOUDFRONT_ORIGIN_ACCESS_IDENTITY_ID 必须替换为一些 CloudFront ID,但不确定在这种情况下是否需要这样做。

我确实浏览了有关 CloudFront ID 和存储桶策略的各种文档,但一切仍然令人困惑。非常感谢您对此的任何帮助。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    该研讨会提供的文件似乎提到了 Amazon CloudFront 的使用。但是,说明中没有提及。

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

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

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

    确保您的存储桶名称后仍有/*

    【讨论】:

    • 成功了!非常感谢@John。我不知道我之前必须包含“/*”,这就是“Principal”:“*”不起作用的原因。
    • /* 的原因是它授予GetObject 对桶的内容 的权限,而不是桶本身。
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多