15

Ich habe eine Webanwendung, die Umgebungsvariablen für einige ihrer Konfiguration verwendet (DB-Anmeldeinformationen, API-Schlüssel usw.). Ich verwende derzeit Elastic Beanstalk für die Bereitstellung und kann diese einfach innerhalb von AWS festlegen, was großartig ist, da ich diese sensiblen Daten nicht in meiner Codebasis habe.Umgebungsvariablen mit AWS CodeDeploy

Ich bin jedoch auf der Suche nach einer Umstellung von Elastic Beanstalk, damit ich ein wenig mehr Flexibilität mit meinen Webinstanzen nutzen kann, und natürlich versuche ich, CodeDeploy zu implementieren (von meinem Codeship CI-Setup). CodeDeploy ist ziemlich geradlinig und ich habe es mit Codeship integriert, aber ich habe bemerkt, dass es keine eingebaute Funktion gibt, um Umgebungsvariablen mit CodeDeploy zu setzen, wie es bei Elastic Beanstalk der Fall ist. Hat jemand Best Practices für diesen Prozess?

+3

Auf der Suche nach einer Antwort auf diese auch. – Jon

Antwort

5

Eine Möglichkeit zum Festlegen von Umgebungsvariablen besteht darin, dass Skripts während des Hooks "AfterInstall" ausgeführt werden (angegeben in der appspec http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html).

Ich kann die Umgebung ermitteln, in der ich derzeit in diesen Skripts aufrufe, indem ich zu den Metadaten meiner Instanzen aufrufe, wo ich meine Instanz-ID erhalte und dann das aws cli zum Ausführen von describe-Tags verwendet, die nach meiner Instanz-ID gefiltert sind ein Tag-Satz für Umwelt

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 

ich das nicht lieben, aber bis Code Deploy in etwas gebaut hat Parameter an die AppSpec passieren, das ist das beste, was ich finden kann.

+0

Wenn es einem nichts ausmacht, env-Variablen mit aws cli/sdk abzurufen, wäre es besser, den AWS Parameter Store zu verwenden, der für das Bewahren von Geheimnissen gedacht ist. Tutorial ist [hier] (https://aws.amazon.com/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/) aber es ist immer noch nicht in appspec.yml integriert – antiplayer

2

Sie verwenden Github Angenommen, Ihren Code zu verwalten, hier ist eine mögliche Art und Weise Ihrer Umgebung

Verwenden git-crypt (https://github.com/AGWA/git-crypt) zu verwalten sensible Informationen zu verschlüsseln. Sie können den Schlüssel zum Dekodieren dieser Dateien auf dem Server verwenden. Während der CodeDeploy nach der Installationsphase konnten Sie die Umgebung entschlüsseln und einrichten.

Der Vorteil ist jetzt, Sie haben alle Informationen auf sichere Weise an einem Ort.

-1

Es scheint möglich zu sein, Umgebungsvariablen (hauptsächlich Ihre DEPLOYMENT_GROUP_NAME) zu verwenden.

Siehe this guide von Amazon.