【问题标题】:S3 Bucket principal set to OAI, but CloudFront cannot get object?S3 存储桶主体设置为 OAI,但 CloudFront 无法获取对象?
【发布时间】:2021-02-02 17:47:34
【问题描述】:

我已经设置了 CloudFront 分配。

在 S3 存储桶上,我已将 Block all public access 设置为 OFF

存储桶策略如下所示:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E*********3"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket name.....>/*"
        }
    ]
}

CloudFront 分配源与存储桶主体中指定的 OAI 相关联,如上所示。据我了解,上述存储桶策略应允许 CloudFront 分配访问该文件,因为在 CloudFront 中指定了源,并且其 OAI 与存储桶策略中显示的匹配。

我在想我需要修改存储桶中文件的策略吗?

我的目标是只让 CloudFront 能够读取存储桶中的文件,否则将其锁定。

我需要改变什么来实现这一点?

【问题讨论】:

标签: amazon-s3 amazon-cloudfront


【解决方案1】:

就我而言,我终于弄清楚我做错了什么。在原始请求中,我没有正确设置authMethod。我需要将其设置为origin-access-identity

    request.origin = {
        s3: {
            domainName: s3DomainName,
            region: region,
            authMethod: 'origin-access-identity',
            path: '',
            customHeaders: {}
        }
    };

完成此操作后,我能够从 S3 获取文件并启用 Block all public accessON

所以现在存储桶被锁定了,CloudFront 仍然可以从中获取它需要的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-21
    • 2021-10-10
    • 2020-11-29
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多