PHP Amazon SDK,S3存储桶访问被拒绝

PHP Amazon SDK,S3存储桶访问被拒绝,php,amazon-web-services,amazon-s3,aws-sdk,Php,Amazon Web Services,Amazon S3,Aws Sdk,我第一次尝试使用PHP AWS SDK(“AWS/AWS SDK PHP”:“^3.19”)来使用S3 我创建了一个桶:“myfirstbucket jeremyc” 我创建了一个策略: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject",

我第一次尝试使用PHP AWS SDK(“AWS/AWS SDK PHP”:“^3.19”)来使用S3

我创建了一个桶:“myfirstbucket jeremyc”

我创建了一个策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::myfirstbucket-jeremyc/*"
            ]
        }
    ]
}
我将该策略应用于一个组,然后在此组中创建了一个用户“s3 myfirstbucket jeremyc”

我的PHP代码是:

<?php
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

error_reporting(E_ALL);

require(__DIR__ . '/vendor/autoload.php');

$s3Client = S3Client::factory([
    'credentials' => [
        'key'    => $_SERVER['AWS_S3_CLIENT_KEY'],
        'secret' => $_SERVER['AWS_S3_CLIENT_SECRET']
    ],
    'region' => 'eu-west-1',
    'version' => 'latest',
    'scheme' => 'http'
]);

$result = $s3Client->putObject(array(
    'Bucket' => 'myfirstbucket-jeremyc',
    'Key' => 'text.txt',
    'Body' => 'Hello, world!',
    'ACL' => 'public-read'
    ));

您正在为新对象设置ACL,但您不允许
s3:PutObjectAcl

谢谢!它通过注释ACL行或在策略中添加“s3:PutObjectAcl”来工作。