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

时间:2020-10-19 18:54:23

标签: amazon-web-services amazon-s3 amazon-cloudfront

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

我从客户端使用AWS移动SDK上载到S3。当客户端使用S3中的文件时,我选择了CloudFront,然后一切正常,直到进行了此更改:

enter image description here

创建发行版时,我让CloudFront更新了存储桶策略以将OAI包括在主体中:

enter image description here

因此,我以为我可以在CloudFront上运行GET调用,因为CloudFront具有OAI设置,而S3存储桶反映了这一点。

但是,我一直拒绝访问:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

不幸的是,根据documentation,声明如下:

必须在存储桶上禁用Amazon S3 Block公共访问。

这是因为它将由于Block public and cross-account access to buckets and objects through any public bucket or access point policies值而忽略存储桶策略。

除非您的存储桶策略默认还允许匿名GetObject,否则您的对象将不会公开。