15

Ho un'applicazione web che utilizza variabili d'ambiente per alcune delle sue configurazioni (credenziali di DB, chiavi API, ecc.). Attualmente sto utilizzando Elastic Beanstalk per l'implementazione e posso facilmente impostarli da AWS, il che è ottimo perché non ho questi dati sensibili nella mia base di codice.Variabili d'ambiente usando AWS CodeDeploy

Tuttavia, sto cercando di passare da Elastic Beanstalk in modo da poter sfruttare un po 'più flessibilità con le mie istanze web, e naturalmente sto cercando di distribuire (dalla mia configurazione CI Codeship) utilizzando CodeDeploy. CodeDeploy è abbastanza semplice e l'ho integrato correttamente con Codeship, ma ho notato che non esiste alcuna funzione integrata per impostare le variabili di ambiente con CodeDeploy come avviene con Elastic Beanstalk. Qualcuno ha delle migliori pratiche per questo processo?

+3

Alla ricerca di una risposta a questo pure. – Jon

risposta

5

Un modo in cui ho trovato di impostare le variabili di ambiente è tramite gli script eseguiti durante l'hook AfterInstall (specificato nell'appspec http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html).

Sono in grado di determinare l'ambiente in cui sto attualmente distribuendo in questi script richiamando i miei metadati delle istanze in cui ottengo il mio id di istanza e quindi utilizzo il cli aws per eseguire i tag descrittivi filtrati all'ID di istanza in cui ho un tag set per l'ambiente

ID=$(curl "http://169.254.169.254/latest/meta-data/instance-id") 
aws --region us-east-1 ec2 describe-tags --filters Name=resource-id,Values=$ID Name=key,Values=Environment 

io non amo questo, ma fino a quando Codice Deploy ha qualcosa costruito per passare i parametri al appspec, questo è il migliore che posso trovare.

+0

Se non ci si preoccupa di recuperare variabili env usando aws cli/sdk, un approccio migliore sarebbe usare AWS Parameter Store, progettato per mantenere i segreti. Tutorial è [qui] (https://aws.amazon.com/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/) tuttavia è ancora non integrato con appspec.yml – antiplayer

2

Supponendo che si sta utilizzando GitHub per gestire il codice, qui è un modo potenziale per gestire l'ambiente

Usa git-crypt (https://github.com/AGWA/git-crypt) per criptare le informazioni sensibili. È possibile inserire la chiave per decodificare questi file sul server. Durante la fase di codedeploy afterInstall, è possibile decodificare e configurare l'ambiente.

Il vantaggio è che ora si dispone di tutte le informazioni in un unico posto in modo sicuro.

-1

Sembra possibile utilizzare Variabili d'ambiente (principalmente il tuo DEPLOYMENT_GROUP_NAME).

Vedere this guide da Amazon.

Problemi correlati