我正在尝试设置我希望我的 CloudFront 分配访问的 S3 存储桶。
在我的客户中,我使用 AWS 移动 SDK 上传到 S3。当客户端使用来自 S3 的文件时,我点击了 CloudFront,一切正常,直到我做出此更改:
当我创建分配时,我让 CloudFront 更新存储桶策略以将 OAI 包含在委托(delegate)人中:
然后我想我可以在 CloudFront 上运行 GET 调用,因为 CloudFront 具有 OAI 设置并且 S3 存储桶反射(reflect)了这一点。
但是,我一直收到访问被拒绝的消息:
我还需要做什么来保护存储桶并只允许 CloudFront 读取并允许我的客户端应用程序能够使用配置有我为其设置的 poolId 的 SDK 将文件上传到它?除非我不选中“阻止所有公共(public)访问”,否则我会通过 CloudFront 拒绝访问。
最佳答案
不幸的是,根据documentation声明如下:
Amazon S3 Block Public Access must be disabled on the bucket.
这是因为由于 Block public and cross-account access to buckets and objects through any public bucket or access point policies
值,它会忽略存储桶策略。
除非您的存储桶策略也默认允许匿名 GetObject
,否则您的对象将不会公开。
关于amazon-web-services - 允许 CloudFront 访问 S3 源,同时还具有 S3 存储桶 阻止所有公共(public)访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64433524/