我在S3存储桶策略上面临一个谜,它阻止了我从PutObject获取Php S3Client。我得到的错误是:
执行错误" PutObject" on" https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg&#34 ;; AWS HTTP错误:客户端错误响应[url] https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg [状态代码] 403 [原因短语]禁止AccessDenied(客户端):访问被拒绝
但是,使用相同的Access键和Secret键,我可以使用CyberDuck客户端使用PutObject!是否存在可能导致这种奇怪行为的隐藏S3策略?
答案 0 :(得分:2)
之前我已经看过这个确切的症状了。问题可能在于您的Php代码中的s3client生成的日期/时间戳。打开s3client的调试,看看请求中的日期/时间戳是否正在生成" GMT" (正确)或其他。如果它的其他东西,这可能是问题,你可以将它与CyberDuck进行比较,如果它将显示它所做的请求的调试输出。
答案 1 :(得分:1)
这可能是由于身份验证错误造成的。确保您完美地进行身份验证。
测试的一种方法是尝试从S3到s3客户端访问一些受限/私有资源。
答案 2 :(得分:1)
答案 3 :(得分:0)
由于使用CannedACL,我收到了错误消息(需要PutObjectAcl权限)。