Laravel + AWS secret manager

Проект на Laravel развернули на AWS EC2. Он работает не в контейнере(информации о том как он поднят на AWS - минимум) Нужно отказатся от .env в проекте. Для этого был создан AWS secret manager куда внесены все переменные окружения

Цель - нужно чтобы переменные среды были доступны в приложении без присутствия .env

  1. в девопса недостаточно знаний контейнизировать работу приложения. Реально ли сделать, чтобы переменные среды с AWS secret manager при деплое проекта были доступны в приложении без написания обработчика в самом проекте?
  2. Если все же писать код и доставать переменные по апи с 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. Как и где єто лучше реализовать? Спасибо


Ответы (0 шт):