Amazon web services AWS:Can';t通过SDK将文件上传到私有S3

Amazon web services AWS:Can';t通过SDK将文件上传到私有S3,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,因此,我有一个私人s3存储桶,希望能够上传一个文件到它。 我的用户有一个AmazonS3FullAccess,结果发现这还不够 错误是 Error executing "PutObject" on "https://my-existing-bucket-name.s3.amazonaws.com/5037f466f9018271b16b1e77d3d7f386.pdf"; AWS HTTP error: Client error: `PUT https:/

因此,我有一个私人s3存储桶,希望能够上传一个文件到它。 我的用户有一个
AmazonS3FullAccess
,结果发现这还不够

错误是

Error executing "PutObject" on "https://my-existing-bucket-name.s3.amazonaws.com/5037f466f9018271b16b1e77d3d7f386.pdf"; AWS HTTP error: Client error: `PUT https://my-existing-bucket-name.s3.amazonaws.com/5037f466f9018271b16b1e77d3d7f386.pdf` resulted in a `403 Forbidden`
我还尝试添加自定义策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::my-existing-bucket-name/*"
        }
    ]
}
但它仍然不起作用,尽管可以使用相同的凭据删除或检索文件

下面是我如何将文件上传到AWS(如果将bucket访问从私有切换到公共,效果很好)


问题出在下面的选项中

'ACL' => 'authenticated-read'
对已验证读取的描述表明
所有者获得完全控制权。AuthenticatedUsers组获得读取权限。


显然,它与私有bucket设置冲突,这就是它产生错误的原因。但错误代码403令人困惑,我认为响应代码409在这里更有意义。总之,当我切换到private(默认ACL)时,它起了作用。

是否在IAM用户或某个IAM角色下执行
$this->s3Client->putObject
操作?@Marcin有一个具有指定策略的特殊IAM用户,我已将他的访问密钥添加到我的SDKAR中有任何bucket策略吗?无,我刚刚打开了
阻止所有公共访问
和下面的所有复选框
'ACL' => 'authenticated-read'