Symfony AmazonS3权限问题

Symfony AmazonS3权限问题,symfony,amazon-s3,Symfony,Amazon S3,我的申请有两个桶: -gambify dev devil(促进发展) -gambify产品(用于生产) 我对它们进行了完全相同的设置,但对于我的制作,我在访问某些资源时遇到了问题。我的生产环境是一个宝塔箱。我使用Gaufrete、LiipImagine和Vichuploader处理文件。我遇到的问题是,在我的生产环境中,要么我的应用程序请求了错误的资源,要么存在访问问题。因为我有很多日志表明我的bucket中存在AccessDenied错误: <Error> <Code>

我的申请有两个桶: -gambify dev devil(促进发展) -gambify产品(用于生产)

我对它们进行了完全相同的设置,但对于我的制作,我在访问某些资源时遇到了问题。我的生产环境是一个宝塔箱。我使用Gaufrete、LiipImagine和Vichuploader处理文件。我遇到的问题是,在我的生产环境中,要么我的应用程序请求了错误的资源,要么存在访问问题。因为我有很多日志表明我的bucket中存在AccessDenied错误:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>D90C05F182C91003</RequestId>
<HostId>
i7SkwNCbyUnCCBCnkyyrv7x9pOLGtr4sUgqWYkJMqk0X0lXYIW5zeu4688FCqBiA
</HostId>
</Error>
为了进一步调查这个问题(我真的不知道它是从哪里来的,因为它在所有其他环境中都可以正常工作,而且在生产中,它在两周前也可以正常工作),我想看看请求了哪个ressource。是否有机会找到请求的URL,或者是谁试图请求导致此问题的内容?因为如果我提供了一个正确的路径到一个现有的RESOUCE,这个桶就可以正常工作: e、 g:

更新: 现在,我发现了导致我出现问题的真正错误消息:

04fadbab7a82c23143855d5c918e1ba8fa32ef1d622c00a3daa9fcdc6daf5d90 gambify产品[05/Aug/2013:19:03:57+0000]173.193.185.250- 133EF43443891C63 REST.HEAD.OBJECT 外形\拇指\小型/51e9a03453c80.jpeg“头部 /配置文件_thumb_small/51e9a03453c80.jpeg HTTP/1.1“403 签名不匹配1015-7- "" “aws sdk php/1.5.17.1 php/5.3.23 Linux/2.6.32-042stab068.8 Arch/x86_64 SAPI/fpm fcgi Integer/9223372036854775807构建/20121126140000 simplexml/0.1 json/1.2.1 pcre/8.31 spl/0.2 curl/7.19.7 openssl/0.9.8k apc/3.1.9 pdo/1.0.4dev pdo_sqlite/1.0.1 sqlite/2.0-dev sqlite3/0.7-dev zlib/1.1内存限制/200M date.timezone/Europe.Berlin 打开\u basedir/关闭安全模式/关闭zend.启用\u gc/打开“-

我仍然不知道是什么导致了最初的问题


将有关签名错误的讨论移至:

如果您还没有这样做,您可以将生产存储桶配置为保留针对其发出的所有请求的日志,类似于Apache或其他web服务器访问日志

启用日志记录后,您将能够找到请求的URL、请求者和请求时间

更新:

如果尝试通过API或AWS控制台访问S3服务器日志文件时返回AccessDenied错误,则问题是由于日志文件上缺少权限(ACL)造成的

要访问这些日志文件,应向拥有它们的用户授予打开/下载权限。启用公共读取的bucket策略不足以访问服务器日志文件


下面的评论中提供了有关该问题的更多详细信息。

这些看起来像是当ACL/Grant权限设置不正确时S3发回的响应。我先检查一下。如果您的存储桶位于CloudFront发行版之后,请确保您也使CloudFront缓存无效。

我有点困惑,因为我已经在控制台中启用了日志记录功能,但文档中指出有一个字段可以记录:我不确定您找的位置是否正确。如果启用了访问日志,那么在API调用后从S3收到的响应不会有任何差异。您应该在S3上保存的访问日志中查找,在配置生产bucket时指定的日志bucket中查找。我在bucket中查找。(与访问的存储桶相同)。还有很多文件只包含引用的内容。这些日志文件的命名格式是:targetPrefixyyy mm DD HH mm SS UniqueString?(TargetPrefix是配置bucket日志记录时提供的密钥)。如果是,除了引用的错误之外,它们是否都不包含任何其他内容?一个示例文件名是:2013-07-31-22-16-35-80805E1DA6CB1C4F,它似乎不包含TargetPrefix。我没有提供任何东西,我只是在bucket属性下的管理控制台中启用了日志记录。我正在登录到我监视的同一个存储桶。我不是在云前端,我没有设置任何ACL内容,只是尝试将其公开(用于提供图像),否则我将通过API访问它来存储图像。奇怪。这是SDK的一个相当旧的版本,但如果这就是问题所在,我会感到惊讶。您正在使用SDK对文件执行HEAD请求,但没有查询字符串身份验证。大概是因为该文件已经是公共的。嗯…