无法通过S3访问通过CloudFront更新的文件

Eri*_*pir 2 amazon-s3 amazon-web-services amazon-cloudfront

我使用Cloud-Front访问S3存储桶中的文件并更新文件.我现在禁用Cloud-Front,但是我现在无法直接通过S3访问这些文件.

此外,当我尝试设置存储桶中的项目的权限时,我收到一条消息,表明访问被拒绝.对于直接通过S3更新的项目,我没有这样的问题.

如何直接通过s3启用对我的存储桶中的文件的访问?

Way*_*inn 5

我遇到了同样的问题:使用Origin Access Identity创建的文件无法被主机帐户(或任何用户帐户)读取,也无法通过CLI,Lambda或Console访问.

我的解决方案是在客户端请求上设置一个标题,允许桶所有者控制文件.

x-amz-acl=bucket-owner-full-control

这不应要求更改您的Cloudfront分发版.所有x-amz-*标题都应自动传递.

我使用需要此标头的存储桶策略来补充此解决方案.因此,人们无法破解我的客户端并上传我无法管理的文件.以下内容添加到允许s3:PutObjectOrigin Access Identity 的策略语句对象中:

"Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "bucket-owner-full-control"
                    ]
                }
            }
Run Code Online (Sandbox Code Playgroud)

说明

使用ACL管理访问权限中描述了原因.

例如,如果存储桶拥有者允许其他AWS账户上载对象,则只能通过拥有该对象的AWS账户使用对象ACL来管理这些对象的权限.

我发现管理由Origin Access Identity创建的ACL的唯一方法是x-amz-acl在对象创建时设置标头.