Amazon web services 允许CloudFront访问S3源站,同时让S3存储桶阻止所有公共访问?

Amazon web services 允许CloudFront访问S3源站,同时让S3存储桶阻止所有公共访问?,amazon-web-services,amazon-s3,amazon-cloudfront,Amazon Web Services,Amazon S3,Amazon Cloudfront,我正在尝试设置我希望CloudFront发行版访问的S3存储桶 从我的客户端,我使用AWS mobile SDK上传到S3。当客户端使用S3中的文件时,我点击了CloudFront,在我做出此更改之前,一切正常: 创建发行版时,我让CloudFront更新bucket策略,使OAI包含在主体中: 所以,我想我可以在CloudFront上运行GET调用,因为CloudFront有OAI设置,S3 bucket反映了这一点 但是,我一直被拒绝访问: 我还需要做什么来保护bucket,只允许Cl

我正在尝试设置我希望CloudFront发行版访问的S3存储桶

从我的客户端,我使用AWS mobile SDK上传到S3。当客户端使用S3中的文件时,我点击了CloudFront,在我做出此更改之前,一切正常:

创建发行版时,我让CloudFront更新bucket策略,使OAI包含在主体中:

所以,我想我可以在CloudFront上运行GET调用,因为CloudFront有OAI设置,S3 bucket反映了这一点

但是,我一直被拒绝访问:


我还需要做什么来保护bucket,只允许CloudFront读取并允许我的客户端应用程序能够使用配置了poolId的SDK将文件上载到bucket?。除非我未选中“阻止所有公共访问”,否则我将通过CloudFront拒绝访问。

不幸的是,根据以下说明:

必须在存储桶上禁用Amazon S3阻止公共访问

这是因为它将忽略bucket策略,因为
通过任何公共bucket或访问点策略值阻止公共和跨帐户访问bucket和对象


除非您的bucket策略也允许匿名
GetObject
,否则默认情况下,您的对象将不会是公共对象。

在分发设置中检查默认根对象。允许cloudfront访问S3 bucket对象是一个相当简单的过程。确保在对象所在的路径上访问对象。