Laravel + AWS secret manager
Проект на Laravel развернули на AWS EC2. Он работает не в контейнере(информации о том как он поднят на AWS - минимум) Нужно отказатся от .env в проекте. Для этого был создан AWS secret manager куда внесены все переменные окружения
Цель - нужно чтобы переменные среды были доступны в приложении без присутствия .env
- в девопса недостаточно знаний контейнизировать работу приложения. Реально ли сделать, чтобы переменные среды с AWS secret manager при деплое проекта были доступны в приложении без написания обработчика в самом проекте?
- Если все же писать код и доставать переменные по апи с AWS secret manager, это нормальная практика? И где это делать лучше? В каком то ServiceProvider ? Вот например код в AppServiceProvider
public function register()
if (!app()->environment('local')) {
$client = new SecretsManagerClient(['version' => 'latest',
'region' => config('aws.region'),
]);
$secretName = config('aws.secret_name');
$result = $client->getSecretValue(['SecretId' => $secretName]);
if (isset($result['SecretString'])) {
$secrets = json_decode($result['SecretString'], true);
foreach ($secrets as $key => $value) {
putenv("$key=$value");
$_ENV["$key"] = $value;
$_SERVER["$key"] = $value;
}
}
}
Это нормальный подход? мне не очень нравится, что при каждом запросе переменные среды будут доставаться с AWS. Как и где єто лучше реализовать? Спасибо