拒绝对S3存储桶的AWS CloudFront访问

罗马Primoz:

我正在尝试设置CloudFront服务于S3存储存储桶中的静态文件我有安装程序分发包,但是AccessDenied在尝试浏览到/CSS/stlyle.cssS3存储桶中的CSS()文件得到了

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>E193C9CDF4319589</RequestId>
    <HostId>
xbU85maj87/jukYihXnADjXoa4j2AMLFx7t08vtWZ9SRVmU1Ijq6ry2RDAh4G1IGPIeZG9IbFZg=
    </HostId>
</Error>

我已将CloudFront发行版设置为我的S3存储桶,并创建Origin Access Identity policy了自动添加到S3存储桶的存储:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E21XQ8NAGWMBQQ"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myhost.com.cdn/*"
        }
    ]
}

我错过了什么?

我希望通过CloudFront提供此S3存储桶中的所有文件...

*更新*

该云前指南说:

默认情况下,您的Amazon S3存储桶及其中的所有对象都是私有的-只有创建该存储桶的AWS账户才有权读取或写入其中的对象。如果要允许任何人使用CloudFront URL访问Amazon S3存储桶中的对象,则必须授予对对象的公共读取权限。(这是使用CloudFront和Amazon S3时最常见的错误之一。您必须显式授予Amazon S3存储桶中每个对象的特权。)

因此,基于此,我向S3存储桶中的所有对象添加了新权限Everyone Read/Download现在,我可以访问文件了。

但是现在当我访问这样的文件时https://d3u61axijg36on.cloudfront.net/css/style.css,它将被重定向到S3 URI和HTTP如何禁用此功能?

约翰·罗滕斯坦:

为了解决您的问题,我通过以下方式重新创建了情况:

  • 创建了没有存储桶策略Amazon S3存储
  • 上载public.jpg并通过“公开”将其公开
  • 上载了private.jpg并将其设为私有
  • 创建了一个Amazon CloudFront Web发行版
    • 原始域名:从列表中选择我的S3存储桶
    • 限制存储桶访问:
    • 原始访问身份:创建新身份
    • 授予存储桶读取权限:是,更新存储桶策略

我检查了存储桶,CloudFront添加了与您类似的存储桶策略。

该分布被标记In Progress为一段时间。说完Enabled,我通过xxx.cloudfront.netURL 访问文件

  • xxx.cloudfront.net/public.jpg 重定向到S3 URL http://bucketname.s3.amazonaws.com/public.jpg是的,我可以看到该文件,但不应使用重定向。
  • xxx.cloudfront.net/private.jpg 重定向了我,但后来我收到了,Access Denied因为它是S3中的私有文件。

然后,我做了一些研究,发现这很普遍。有些人通过将CloudFront分发指向静态托管的网站URL来使用变通办法,但这有一个缺点,即它不能与Origin Access Identity一起使用,而且我还怀疑它不会收到“向边缘的免费S3流量”折扣。

因此,我等了一夜,今天早上进行了测试,一切都很好

底线:即使它说了ENABLED,事情也可能要花费几个小时(例如整夜)才能使自己正确。然后它将按文档所述工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于S3存储桶的AWS Cloudfront分发,带有跨帐户对象的访问被拒绝

AWS S3 存储桶策略访问被拒绝

AWS S3:关闭“存储桶阻止公共访问”时,拒绝访问对象

AWS S3存储桶策略编辑器访问被拒绝

Spring Boot Amazon AWS S3存储桶文件下载-访问被拒绝

AWS S3存储桶-子页面上的访问被拒绝

尝试从AWS S3存储桶下载图片时访问被拒绝

从AWS S3存储桶加载图像时访问拒绝错误

Rails AssetSync和AWS s3存储桶访问被拒绝

Cloudfront提供通过AWS CDK Python为S3存储桶起源创建的Access拒绝响应,而无需公共访问

访问被拒绝在 s3 存储桶上公开图像

Jenkins拒绝S3存储桶访问

PHP Amazon SDK,S3存储桶访问被拒绝

s3存储桶策略访问被拒绝

以root用户(=存储桶拥有者)在AWS S3存储桶上放置存储桶策略时拒绝访问

AWS Cloudfront重定向到S3存储桶

对 AWS S3 存储桶的访问受限

如何对AWS S3存储桶访问进行限速

AWS S3 存储桶访问令牌

配置AWS Lambda以访问S3存储桶

访问客户端的 AWS S3 存储桶

允许CloudFront访问S3源,同时还拥有S3存储桶阻止所有公共访问?

Cloudfront签名的cookie并同时访问s3存储桶中的多个路径

如何在 cloudfront lambda@Edge 函数中访问 S3 存储桶对象?

尽管有CloudFront原始身份访问策略,S3存储桶仍然公开

lambda无法访问受Cloudfront限制的s3存储桶

AWS S3 存储桶访问错误和存储桶显示旧文件

AWS Cloudfront - S3 与 CloudFront Origin Access 和 Referer 存储桶策略

为什么我的lambda函数尝试访问S3存储桶时会被拒绝访问?