Ошибка при выполнении объектов 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. Этот учебник поможет вам в этом.

Другие вопросы по тегам