Ruby on rails 为什么只为S3存储桶中的一些图像返回AccessDenied?

Ruby on rails 为什么只为S3存储桶中的一些图像返回AccessDenied?,ruby-on-rails,amazon-s3,carrierwave,amazon-cloudfront,Ruby On Rails,Amazon S3,Carrierwave,Amazon Cloudfront,我正在Rails应用程序中使用Carrierwave将图像文件上载到S3 这已经完美地工作了一段时间 突然,新上传的文件返回“AccessDenied”。这仅在通过Cloudfront CDN引用访问文件时发生。如果使用了direct S3 url,则图像显示正确 我在S3存储桶上设置了访问策略和权限 让我困惑的是,为什么有些文件返回的访问被拒绝,而另一些文件显示正确 检查S3中的属性,所有文件都具有相同的权限和策略,这些权限和策略是在bucket级别设置的 在S3上可以设置哪些每文件设置,这些

我正在Rails应用程序中使用Carrierwave将图像文件上载到S3

这已经完美地工作了一段时间

突然,新上传的文件返回“AccessDenied”。这仅在通过Cloudfront CDN引用访问文件时发生。如果使用了direct S3 url,则图像显示正确

我在S3存储桶上设置了访问策略和权限

让我困惑的是,为什么有些文件返回的访问被拒绝,而另一些文件显示正确

检查S3中的属性,所有文件都具有相同的权限和策略,这些权限和策略是在bucket级别设置的


在S3上可以设置哪些每文件设置,这些设置只会导致某些文件返回拒绝访问?这些设置是如何配置的

您能否验证您是在实际记录上设置权限,而不仅仅是在bucket上设置权限?IE record.acl=:public\u在调用record.saveThank@ruby\u newbie之前阅读。我应该通过Carrierwave的
config.fog\u public
设置来设置public\u read。然而,这可能是没有被正确调用。如何从S3控制台验证这一点。这是否会更改查看/编辑/列表权限?如果是,则是,所有记录都具有相同的权限。请从CloudFront查看响应头。您看到的是
X-Cache:hit from cloudfront
还是
X-Cache:miss from cloudfront
?前者表示对象已缓存,后者表示未缓存。您还可以从cloudfront中看到
X-Cache:error
,如果是缓存错误,则错误应伴有
Age:
标题。缓存命中也有
年龄:
;在这两种情况下,这是自联系原点(S3)以来的秒数时间。您可能已经缓存了错误或成功,事实上,所有不是来自缓存的请求都在工作或不工作。有模式吗?谢谢@Michael sqlbot。对于被拒绝访问的文件,我从cloudfront获得了
X-Cache:Error,而其他文件是从cloudfront命中的
。如何确定错误的原因?