В приложении Symfony 4.3 с использованием symfony / dotenv 4.3.11 и aws / aws-sdk-php 3.173.13:
Я хотел бы аутентифицировать AWS SDK, используя учетные данные, предоставленные через переменные среды, и я хотел бы использовать компонент dotenv для предоставления этих переменных среды.
Это должно быть возможно: установка переменных среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY - это один из способов автоматической аутентификации с помощью aws sdk. И DotEnv должен превратить вашу конфигурацию в переменные среды.
Однако, когда я устанавливаю эти переменные в своих файлах .env.local
или .env
, я получаю следующую ошибку:
Aws \ Exception \ CredentialsException: ошибка при получении учетных данных из службы метаданных профиля экземпляра.
Это не работает:
.env.local:
AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXXXXX
$ ./bin/console command-that-uses-aws-sdk
Это работает:
$ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXXXXX ./bin/console command-that-uses-aws-sdk
Информация об отладке:
Я сделал команду symfony, которая выводит переменные окружения в $_ENV
. С AWS_ACCESS_KEY_ID / SECRET в .env.local, конечно же, он отображается как переменная среды:
...
[SYMFONY_DOTENV_VARS] => MEQ_ENV,APP_ENV,APP_SECRET,DATABASE_URL,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_REGION,AWS_ACCOUNT
[AWS_ACCESS_KEY_ID] => XXX
[AWS_SECRET_ACCESS_KEY] => XXXXXX
...