Ошибка при выполнении объектов Listobject из S3 с использованием лямбда-функций Bref Laravel
Я пытаюсь сохранить свои активы в S3, вызывая API, реализованный как функция Lambda с использованием Bref Serverless Package. Я использую Laravel. Звонок в
Storage::directories();
выдают следующую ошибку.
сообщение: Ошибка выполнения "ListObjects" на "https://calmed-storage.s3.us-west-2.amazonaws.com/?prefix=&delimiter=%2F&encoding-type=url"; Ошибка HTTP AWS: ошибка клиента:
GET https://mys3-storage.s3.us-west-2.amazonaws.com/?prefix=&delimiter=%2F&encoding-type=url
привело к403 Forbidden
ответ: предоставленный вами идентификатор ключа доступа AWS (усеченный...)InvalidAccessKeyId (клиент): предоставленный вами идентификатор ключа доступа к AWS не существует в наших записях. - InvalidAccessKeyId Указанный вами идентификатор ключа доступа AWS не существует в наших записях.
3 ответа
Кажется, вы используете Laravel.
Если это так, вам нужно исправитьconfig/filesystems.php
как описано здесь: https://bref.sh/docs/frameworks/laravel.html#file-storage-on-s3
Из-за неправильной конфигурации, поставляемой в Laravel, аутентификация S3 не будет работать из коробки. Вам нужно будет добавить эту строку в config/filesystems.php:
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'token' => env('AWS_SESSION_TOKEN'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
Я использовал Laravel, а учетные данные хранились в файле.env. aws-sdk-php каким-то образом менял идентификатор доступа и секретный ключ. Не знаю почему. Проблема была решена, когда я жестко запрограммировал идентификатор доступа и секретный ключ в filesystems.php.
Что ж, ошибка говорит сама за себя, вам нужно отправить правильный ключ AWS при взаимодействии с их API.
если вы используете
league/flysystem-aws-s3-v3
как описано в официальных документах Laravel, вам необходимо установить переменные среды AWS S3, перечисленные ниже, в вашем
.env
файл
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=
Чтобы получить ключ доступа, вам необходимо создать пользователя с правильными правами доступа - это Amazon. Этот учебник поможет вам в этом.