访问另一个帐户上传的文件时出现Cloudfront 403错误

时间:2016-09-22 11:15:01

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

我有一个Cloudfront发行版,它将我的一个s3存储桶作为其原始服务器。文件由第三方附件上传者上传到s3。

当我尝试通过cloudfront访问s3中的文件时,我收到了一个403 Forbidden错误,其中包含Access Denied XML(如下所示)。但是当我手动将文件上传到s3存储桶时,我可以通过cloudfront访问该文件。

除文件所有者外,两个文件的权限相同。对于我手动上传的文件,文件的所有者,文件是我的帐户,上传者上传的文件,它是上传者。第三方附件上传器可以将对象完全访问存储桶拥有者。此外,我限制了存储桶访问,但没有访问查看器。

Error returned by cloudfront

导致此错误的原因是什么?我该如何调试呢?

2 个答案:

答案 0 :(得分:4)

当第二个AWS账户将内容上传到通过CloudFront和OAI提供内容的S3存储桶时,上传的文件需要添加OAI规范ID,并使用--grant read = id =" OAI-canonical-ID& #34;当文件上传时;还将S3存储桶拥有者添加为grant full = id =" BucketOwnerID"。 aws cli用于执行上传。根据使用的方法进行调整。 在S3存储桶中查看文件时,权限将CloudFront列为被授权者。该文件应该可以通过CloudFront读取。

答案 1 :(得分:3)

"访问被拒绝"您收到的响应是来自S3的响应,该对象在此对象在S3中可用之前由CloudFront缓存。

例如,如果您尝试使用CloudFront URL并且该文件在S3中不存在,那么您将获得“拒绝访问”#34;响应。即使在上传文件后,CloudFront也会拒绝访问"访问被拒绝"响应缓存直到TTL结束。在此期间,您将继续收到“拒绝访问”#34;响应。

尝试使分发无效。之后,请求该文件,看看您是否得到了正确的答复。

如果这样可以解决问题,那么您需要弄清楚如何避免在CloudFront存在于S3之前请求该对象。