如何解决如何在 AWS s3 中同时拥有公共访问和私有访问?
我有一个 s3 bucket
,它有两个键(文件夹或我不知道如何调用它们):public
和 private
。每个人都应该可以访问公钥,因为只有头像和一些指导文件。现在,在私有目录中,我有敏感文档,这些文档只能由我的 signed URLs
生成的 PHP API
访问。
我创建了一个 Cloudfront
分布和行为。
原始域名 = myproject-development.s3.amazonaws.com
路径模式为 Default (*)
看在上帝的份上,我无法弄清楚政策:目前所有内容都可供公众访问,我知道这是因为声明 Sid 2
我当前的存储桶策略:
{
"Version": "2008-10-17","Id": "PolicyForCloudFrontPrivateContent","Statement": [
{
"Sid": "1","Effect": "Allow","Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXX"
},"Action": "s3:Getobject","Resource": "arn:aws:s3:::myproject-development/public/*","Condition": {
"StringEquals": {
"s3:ExistingObjectTag/public": "yes"
}
}
},{
"Sid": "2","Resource": [
"arn:aws:s3:::myproject-development/private/*","arn:aws:s3:::myproject-development/private"
]
}
]
}
我的存储桶设置开启了 Block all public access
(一切都是绿色的)。
如果我删除 Sid 2,那么私有中的所有内容都将被隐藏,但它甚至无法与签名的 url 一起使用,访问总是被拒绝!
我需要如何修改我的政策,以便 /private
内容只允许使用签名网址?
解决方法
我解决了。原来它需要用 CloudFront origin behavior
来完成。
我为路径 /private
创建了一个新的原点,并在为它创建了 cache behavior
之后,我添加了如下所示的子句:
通过这种方式,我能够阻止对该文件夹的公开访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。