#php #amazon-web-services #amazon-s3 #aws-sdk
#php #amazon-веб-сервисы #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",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::myfirstbucket-jeremyc/*"
]
}
]
}
Я применил политику к группе, а затем создал пользователя ‘s3-myfirstbucket-jeremyc’ в этой группе.
Мой PHP-код :
<?php
use AwsS3S3Client;
use AwsS3ExceptionS3Exception;
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 «; Ошибка HTTP AWS: ошибка клиента: PUT http://s3-eu-west-1.amazonaws.com/myfirstbucket-jeremyc/text.txt в результате было получено 403 запрещенных ответа
Вы знаете, где я ошибаюсь?
Заранее спасибо!
Ответ №1:
Вы устанавливаете ACL для нового объекта, но вы не разрешили s3:PutObjectAcl
.
Комментарии:
1. Спасибо! Это работает, комментируя строку для ACL или добавляя «s3: PutObjectAcl» в политике.