Übergeben von Umgebungsvariablen eines Containers - Amazon Elastic Container Service

Übergeben von Umgebungsvariablen eines Containers

Wichtig

Wir empfehlen, Ihre sensiblen Daten entweder in AWS Secrets Manager-Geheimnissen oder in Parametern von AWS Systems Manager Parameter Store zu speichern. Weitere Informationen finden Sie unter Sensible Daten an einen Container übergeben.

In der Aufgabendefinition angegebene Umgebungsvariablen sind für alle IAM-Benutzer und -Rollen lesbar, denen die DescribeTaskDefinition-Aktion für die Aufgabendefinition erlaubt ist.

Umgebungsvariablen-Dateien sind Objekte in Amazon S3, und es gelten alle Sicherheitsüberlegungen von Amazon S3. Sehen Sie den folgenden Abschnitt Erforderliche IAM-Berechtigungen.

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

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

  • Verwenden Sie den Container-Definitionsparameter environmentFiles, 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. 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 für eine 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

Berücksichtigen Sie Folgendes, wenn eine Umgebungsvariablendatei in einer Containerdefinition angegeben wird.

  • Für Amazon-ECS-Aufgaben auf Amazon EC2 benötigen Ihre Container-Instances die Container-Agenten-Version 1.39.0 oder höher, 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 (Linux) verwenden, um diese Funktion zu verwenden. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

    Stellen Sie sicher, dass die Variable für die Betriebssystem-Plattform unterstützt wird. Weitere Informationen finden Sie unter Containerdefinitionen und Andere Parameter der Aufgabendefinition.

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

  • Jede Zeile in einer Umgebungsdatei muss eine Umgebungsvariable im Format VARIABLE=VALUE 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.

    Im Folgenden finden Sie die entsprechende Syntax.

    #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 sind und sie dieselbe Variable enthalten, werden sie in der Reihenfolge ihres Eintrags verarbeitet. Dies bedeutet, dass der erste Wert der Variablen verwendet wird und nachfolgende Werte doppelter Variablen ignoriert werden. Es wird empfohlen, eindeutige Variablennamen zu verwenden.

  • Wenn eine Umgebungsdatei als Container-Überschreibung angegeben wird, wird sie verwendet. Darüber hinaus werden alle anderen Umgebungsdateien ignoriert, die in der Containerdefinition angegeben sind.

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

Im folgenden Beispiel werden diese Berechtigungen einer Inline-Richtlinie hinzugefügt.

{ "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" ] } ] }