Verwenden von Nicht-AWS-Container-Images in Amazon ECS - Amazon Elastic Container Service

Verwenden von Nicht-AWS-Container-Images in Amazon ECS

Verwenden Sie die private Registry, um Ihre Anmeldeinformationen sicher in AWS Secrets Manager zu speichern und dann in Ihrer Aufgabendefinition auf diese zu verweisen. Dies bietet eine Möglichkeit, auf Container-Images zu verweisen, die in privaten Registrys außerhalb von AWS vorhanden sind und in Ihren Aufgabendefinitionen eine Authentifizierung erfordern. Dieses Feature wird durch Aufgaben unterstützt, die auf Fargate, Amazon-EC2-Instances und externen Instances mit Amazon ECS Anywhere gehostet werden.

Wichtig

Wenn Ihre Aufgabendefinition auf ein im Amazon ECR gespeichertes Image verweist, trifft dieses Thema nicht zu. Weitere Informationen finden Sie unter Amazon ECR-Images mit Amazon ECS im Amazon Elastic Container-Registry-Benutzerhandbuch.

Für Aufgaben, die auf Amazon-EC2-Instances gehostet werden, erfordert dieses Feature Version 1.19.0 oder höher des Container-Agenten. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. 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 Aufgaben, die auf Fargate gehostet werden, erfordert dieses Feature die Plattformversion 1.2.0 oder höher. Weitere Informationen finden Sie unter Fargate-Plattformversionen für Amazon ECS.

Geben Sie in Ihrer Containerdefinition das Objekt repositoryCredentials mit den Details des von Ihnen erstellten Geheimnisses an. Das Geheimnis, auf das Sie verweisen, kann aus einer anderen AWS-Region oder einem anderen Konto stammen als die Aufgabe, die es verwendet.

Anmerkung

Wenn Sie die Amazon-ECS-API, AWS CLI oder das AWS-SDK verwenden und das Secret sich in derselben AWS-Region befindet wie die gestartete Aufgabe, können Sie entweder den vollständigen ARN oder den Namen des Geheimnisses angeben. Wenn das Geheimnis in einem anderen Konto vorhanden ist, muss der vollständige ARN des Geheimnisses angegeben werden. Bei Verwendung der AWS Management Console müssen Sie den vollständigen ARN des Geheimnisses immer angeben.

Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition, welche die erforderlichen Parameter zeigt:

Ersetzen Sie die folgenden Parameter:

  • private-repo mit dem Host-Namen des privaten Repositorys

  • private-image mit dem Image-Namen

  • arn:aws:secretsmanager:region:aws_account_id:secret:secret_name mit dem geheimen Amazon-Ressourcennamen (ARN)

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
Anmerkung

Eine weitere Methode zur Aktivierung der privaten Registrierungsauthentifikation verwendet Umgebungsvariablen von Amazon-ECS-Container-Agenten für die Authentifizierung bei privaten Registrierungen. Diese Methode wird nur für Aufgaben unterstützt, die auf Amazon-EC2-Instances gehostet werden. Weitere Informationen finden Sie unter Konfiguration von Amazon-ECS-Container-Instances für private Docker-Images .

So verwenden Sie eine private Registry
  1. Die Aufgabendefinition muss über eine Aufgaben-Ausführungsrolle verfügen. Auf diese Weise kann der Container-Agent das Container-Image abrufen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.

    Die private Registry-Authentifizierung ermöglicht es Ihren Amazon-ECS-Aufgaben, Container-Images von privaten Registrys außerhalb von AWS (wie Docker Hub, Quay.io oder Ihrer eigenen privaten Registrys) abzurufen, für die Authentifizierungsdaten erforderlich sind. Dieses Feature verwendet Secrets Manager, um Ihre Registry-Anmeldeinformationen sicher zu speichern, auf die dann in Ihrer Aufgabendefinition mithilfe des repositoryCredentials-Parameters verwiesen wird.

    Weitere Informationen zur Konfiguration der privaten Registry-Authentifizierung finden Sie unter Verwenden von Nicht-AWS-Container-Images in Amazon ECS.

    Um Zugriff auf die Geheimnisse zu gewähren, die Ihre privaten Registry-Anmeldeinformationen enthalten, fügen Sie die folgenden Berechtigungen als Inline-Richtlinie zur Aufgaben-Ausführungsrolle hinzu. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von IAM-Richtlinien.

    • secretsmanager:GetSecretValue – Erforderlich, um die privaten Registry-Anmeldeinformationen von Secrets Manager abzurufen.

    • kms:Decrypt – Nur erforderlich, wenn Ihr Geheimnis einen benutzerdefinierten KMS-Schlüssel verwendet und nicht den Standardschlüssel. Der Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten Schlüssel muss als Ressource hinzugefügt werden.

    Das folgende Beispiel einer Inline-Richtlinie fügt die Berechtigungen hinzu:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }
  2. Verwenden Sie AWS Secrets Manager zum Erstellen eines Secrets für Ihre privaten Registrierungsanmeldeinformationen. Informationen zum Erstellen eines Geheimnisses finden Sie unter Erstellen eines AWS Secrets Manager-Geheimnisses im Benutzerhandbuch für AWS Secrets Manager.

    Geben Sie Ihre privaten Registry-Anmeldeinformationen in folgendem Format ein:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  3. Eine Aufgabendefinition registrieren. Weitere Informationen finden Sie unter Erstellen einer Amazon-ECS-Aufgabendefinition mit der Konsole.