Verwenden von Umgebungsvariablen - Amazon Elastic Container Service

Verwenden von Umgebungsvariablen

Umgebungsvariablen können auf folgende Weise an Ihre Container übergeben werden:

  • Individuell mit dem environment-Containerdefinitionsparameter. Dies wird auf die Option --env abgebildet, um auf die docker run zu verweisen.

  • Verwenden Sie den environmentFiles Container-Definitionsparameter, um eine oder mehrere Dateien aufzulisten, die die Umgebungsvariablen enthalten. Die Datei muss in Amazon S3 gehostet werden. Dies wird auf die Option --env-file abgebildet, um auf die docker run zu verweisen.

Durch das Angeben von Umgebungsvariablen in einer Datei können Sie Umgebungsvariablen gesammelt einfügen anstatt sie einzeln anzugeben. Geben Sie innerhalb der Containerdefinition das Objekt environmentFiles mit einer Liste von Amazon S3-Buckets an, die Ihre Umgebungsvariablendateien enthalten. Die Dateien müssen eine .env-Dateierweiterung verwenden, und es gibt eine Begrenzung von zehn Dateien pro Aufgabendefinition.

Wir erzwingen keine Größenbeschränkung für die Umgebungsvariablen, aber eine große Umgebungsvariablendatei kann den Speicherplatz auffüllen. Jede Aufgabe, die eine Umgebungsvariablendatei verwendet, bewirkt, dass eine Kopie der Datei auf den Datenträger heruntergeladen wird. Wir entfernen die Datei als Teil der Aufgaben-Bereinigung.

Im Folgenden finden Sie ein Ausschnitt aus einer Aufgabendefinition, in dem gezeigt wird, wie einzelne Umgebungsvariablen angegeben werden.

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environment": [ { "name": "variable", "value": "value" } ], ... } ], ... }

Im Folgenden finden Sie ein Ausschnitt aus einer Aufgabendefinition, in dem gezeigt wird, wie eine Umgebungsvariablendatei angegeben wird.

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::s3_bucket_name/envfile_object_name.env", "type": "s3" } ], ... } ], ... }

Überlegungen zum Angeben von Umgebungsvariablendateien

Folgendes sollte berücksichtigt werden, wenn eine Umgebungsvariablendatei in einer Containerdefinition angegeben wird.

  • Für Amazon ECS-Aufgaben auf Amazon EC2 benötigen Ihre Container-Instances eine Version 1.39.0 oder höher des Container-Agenten, um diese Funktion verwenden zu können. Informationen zum Überprüfen Ihrer Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon ECS-Container-Agenten.

  • Für Amazon ECS-Aufgaben auf AWS-Fargate müssen Ihre Aufgaben Plattformversion 1.4.0 oder höher verwenden, um diese Funktion zu verwenden. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

  • Die Datei muss die .env-Dateierweiterung und die UTF-8-Kodierung verwenden.

  • Jede Zeile in einer Umgebungsdatei sollte eine Umgebungsvariable im VARIABLE=VALUE Format enthalten. Leerzeichen oder Anführungszeichen werden als Teil der Werte einbezogen. Zeilen, die mit # beginnen, werden als Kommentare behandelt und ignoriert. Weitere Informationen zur Syntax der Umgebungsvariablen finden Sie unter Deklarieren von Standardumgebungsvariablen in Datei.

    Das folgende Beispiel zeigt die Syntax, die verwendet werden muss.

    #This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
  • Wenn Umgebungsvariablen mit dem environment-Parameter in einer Containerdefinition angegeben sind, haben sie Vorrang vor den Variablen, die in einer Umgebungsdatei enthalten sind.

  • Wenn mehrere Umgebungsdateien angegeben werden, die dieselbe Variable enthalten, werden sie von oben nach unten verarbeitet. Es wird empfohlen, eindeutige Variablennamen zu verwenden.

  • Wenn eine Umgebungsdatei als Containerüberschreibung angegeben wird, wird sie verwendet und alle anderen in einer Containerdefinition angegebenen Umgebungsdateien werden ignoriert.

Erforderliche IAM-Berechtigungen

Die Amazon ECS-Aufgabenausführungsrolle ist erforderlich, um diese Funktion zu verwenden. Auf diese Weise kann der Container-Agent die Umgebungsvariablendatei von Amazon S3 abrufen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

Um Zugriff auf die Amazon S3-Objekte zu gewähren, die Sie erstellen, müssen Sie die folgenden Berechtigungen manuell als eingebundene Richtlinie zur Aufgabendefinitionsrolle hinzufügen. Verwenden Sie den Resource-Parameter, um die Berechtigung auf die Amazon S3-Buckets zu erweitern, die die Dateien der Umgebungsvariablen enthalten. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

  • s3:GetObject

  • s3:GetBucketLocation

Ein Beispiel für eine eingebundene Richtlinie, die die Berechtigungen hinzufügt, wird angezeigt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/env_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }