aws s3Client PutObject访问被拒绝,但是Cyber Duck可以成功地使用PutObject

问题描述 投票:3回答:4

我在S3存储桶策略上面临一个谜,它阻止了我从PutObject获取Php S3Client。我得到的错误是:

在“https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg”上执行“PutObject”时出错; AWS HTTP错误:客户端错误响应[url] https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg [状态代码] 403 [原因短语]禁止AccessDenied(客户端):访问被拒绝

但是,使用相同的Access键和密钥,我可以使用Cyber​​Duck客户端PutObject!是否有任何隐藏的S3策略可能导致这种奇怪的行为?

php amazon-web-services amazon-s3
4个回答
2
投票

我以前见过这个确切的症状。问题可能在于您的Php代码中的s3client生成的日期/时间戳。打开s3client的调试,查看请求中的日期/时间戳是否以“GMT”(正确)或其他方式生成。如果它的其他东西,这可能是问题,你可以将它与Cyber​​Duck进行比较,如果它将显示它所做的请求的调试输出。


1
投票

这可能是由于错误的身份验证。确保您完美地进行身份验证。

一种测试方法是尝试从S3到s3客户端访问一些受限/私有资源。


1
投票

PutObject:

注意:

要将应用程序配置为在发送请求正文之前发送请求标头,请使用100-continue HTTP状态代码


0
投票

我因CannedACL使用而得到错误(需要PutObjectAcl权限)。

© www.soinside.com 2019 - 2024. All rights reserved.