2016-03-04 168 views
3

Im在S3存储桶政策上面临着一个谜,它阻止了我从PutObject获得一个Php S3Client。我得到的错误是:aws s3Client PutObject访问被拒绝,但Cyber​​Duck可以PutObject成功

Error executing "PutObject" on " https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg "; AWS HTTP error: Client error response [url] https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg [status code] 403 [reason phrase] Forbidden AccessDenied (client): Access Denied

但是,使用相同的访问密钥和密钥,我可以PutObject使用Cyber​​Duck客户端!有没有隐藏的S3政策可能导致这种奇怪的行为?

+0

你在HEAD或GET上有类似症状吗? –

回答

1

这可能是由于错误的身份验证。确保你的身份验证完美。

一种测试方法是尝试从S3通过s3客户端访问某些受限制/专用资源。

+0

我希望是一样的。不幸的是,我tripple检查访问和密钥,他们都是一样的。而这个桶只有私人资源... – Reusable

1

PutObject:

注:

配置应用程序之前发送请求标发送请求体,使用100继续HTTP状态代码

+0

有趣的....我只是尝试它,不幸的是它没有任何影响。即时通讯猜测我得到的错误是权限问题,而不是身份验证或重定向错误 – Reusable

2

我已经之前看过这个确切的症状。问题可能出在您的Php代码中由s3client生成的日期/时间戳。开启s3client的调试功能,并查看请求中的日期/时间戳记是用“GMT”(正确的)还是其他内容生成的。如果其他东西,这可能是问题,你可以将它与Cyber​​Duck进行比较,如果它会显示你的请求的调试输出。