【问题标题】:PHP Amazon SDK, S3 Bucket Access DeniedPHP Amazon SDK,S3 存储桶访问被拒绝
【发布时间】:2017-02-12 11:32:28
【问题描述】:

我第一次尝试使用 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'
    ));

但我得到了这个错误:

执行“PutObject”时出错 "http://s3-eu-west-1.amazonaws.com/myfirstbucket-jeremyc/text.txt"; AWS HTTP 错误:客户端错误:PUT http://s3-eu-west-1.amazonaws.com/myfirstbucket-jeremyc/text.txt 导致 403 禁止响应

你知道我哪里错了吗?

提前致谢!

【问题讨论】:

    标签: php amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

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

    【讨论】:

    • 谢谢!通过注释 ACL 的行或在策略中添加“s3:PutObjectAcl”来工作。
    猜你喜欢
    • 2012-06-24
    • 2019-04-20
    • 2019-02-03
    • 2018-01-10
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多