我在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键和密钥,我可以使用CyberDuck客户端PutObject!是否有任何隐藏的S3策略可能导致这种奇怪的行为?
我以前见过这个确切的症状。问题可能在于您的Php代码中的s3client生成的日期/时间戳。打开s3client的调试,查看请求中的日期/时间戳是否以“GMT”(正确)或其他方式生成。如果它的其他东西,这可能是问题,你可以将它与CyberDuck进行比较,如果它将显示它所做的请求的调试输出。
这可能是由于错误的身份验证。确保您完美地进行身份验证。
一种测试方法是尝试从S3到s3客户端访问一些受限/私有资源。
我因CannedACL使用而得到错误(需要PutObjectAcl权限)。