При загрузке файла в S3 Bucket, используя следующие коды:
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'ap-southeast-1',
'credentials' => [
'key' => $keyName,
'secret' => $keySecret,
],
]);
try {
$result = $s3Client->putObject([
'Bucket' => 'web-uploads',
'Key' => 'sample.png',
'Body' => fopen('/var/www/html/images/sample.png', 'r'),
]);
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
Это показывает ниже ошибки:
Error executing "PutObject" on "https://web-uploads.s3.ap-southeast-1.amazonaws.com/sample.png"; AWS HTTP error: Client error: `PUT https://web-uploads.s3.ap-southeast-1.amazonaws.com/sample.png` resulted in a `403 Forbidden` response:
AccessDeniedAccess DeniedF43969 (truncated...) AccessDenied (client): Access Denied - AccessDeniedAccess DeniedF43969B3F3F0C85AS8k/6fBsY93ki6RbTQobjqIi6rgxtNqLhys5MbEg85oL4aPl/9IOwE4eNuSrVncFLZSl8JyZDN4=
На тот момент, мои Разрешения на ведро имели «Блокировать публикацию». c доступ "настройки включены.
Только когда я выключил его , как показано ниже:

.. тогда это работало . Загрузка прошла успешно.
Но тогда какой смысл создавать выделенную учетную запись пользователя IAM с «Programmati c Тип доступа». И учитывая ПОЛНЫЕ РАЗРЕШЕНИЯ S3 к нему, через его Политику, приложенную. Как показано ниже:

Я надеялся, что выделенная учетная запись IAM с предоставленными достаточными разрешениями (как упомянуто выше) будет всем необходимым для SDK. Но, видимо, пока нет. Это определение Политики полностью игнорируется. Я думаю, я мог бы даже удалить вложение Политики целиком, и все же оно все равно работало бы с помощью вышеупомянутого подхода.
Но это не то, что я ожидал.
Мой вопрос
Что я пропустил, чтобы PHP SDK успешно загружался на S3, без необходимости Publi c Доступ в разрешениях S3 Bucket?