Direkt zum Inhalt

Wie kann ich meine Anmeldeinformationen für ein privates Repository auf einem Amazon-ECS-Container-Agenten aktualisieren?

Lesedauer: 5 Minute
0

Ich möchte meine Anmeldeinformationen für ein privates Repository auf einem Container-Agenten in Amazon Elastic Container Service (Amazon ECS) aktualisieren, der über AWS Secrets Manager oder Umgebungsvariablen bereitgestellt wird.

Kurzbeschreibung

Um dem Amazon ECS-Container-Agenten private Repository-Anmeldeinformationen bereitzustellen, verwende entweder Secrets Manager in deiner Aufgabendefinition oder Umgebungsvariablen.

Hinweis: Es ist unter Sicherheitsgesichtspunkten nicht zu empfehlen, Anmeldeinformationen auf Container-Instances im Klartext zu speichern. Verwende stattdessen den Secrets Manager, es sei denn, es besteht eine direkte architektonische Abhängigkeit vom Speichern von Registrierungsdaten in der Container-Instance.

Lösung

Aktualisieren der Anmeldeinformationen für dein privates Repository mit Secrets Manager

Führe die folgenden Schritte aus:

  1. Öffne die Secrets-Manager-Konsole.
  2. Wähle dein Secret aus und klicke dann auf Secret-Wert abrufen.
  3. Wähle Bearbeiten aus.
  4. Aktualisiere die gespeicherten Anmeldeinformationen für dein privates Registry und wähle Speichern aus.
  5. Schließe die Schritte im Abschnitt Testen der aktualisierten Anmeldeinformationen für das private Repository ab.

Aktualisieren der Anmeldeinformationen für dein privates Repository mit Umgebungsvariablen

Führe die folgenden Schritte aus:

  1. Stelle eine Verbindung zu deiner Container-Instance her.
  2. Führe den folgenden Befehl aus, um zu überprüfen, wie du deinem ECS-Container-Agenten Docker-Anmeldeinformationen zur Verfügung stellst:
    $ cat /etc/ecs/ecs.config
    Dieser Befehl erzeugt eine Ausgabe des Inhalts der Datei /etc/ecs/ecs.config.

Wenn die Variable ECS_ENGINE_AUTH_TYPE auf docker gesetzt ist, übergib deine Docker-Anmeldeinformationen direkt im Klartext an deinen ECS-Container-Agenten. Es gehört jedoch nicht zu den Best Practices, diesen Ansatz zu verwenden. Verwende stattdessen den Secrets Manager. Oder verwende den dockercfg-Formatansatz im folgenden Abschnitt Abrufen eines neuen Docker-Authentifizierungswerts.

Wenn die Variable ECS_ENGINE_AUTH_TYPE auf dockercfg gesetzt ist, übergib deine Docker-Anmeldeinformationen durch einen von Docker generierten Authentifizierungswert, der durch den Befehl docker login generiert wurde. Wenn du diesen Ansatz verwendest, führe die Schritte im Abschnitt Abrufen eines neuen Docker-Authentifizierungswerts aus.

Abrufen eines neuen Docker-Authentifizierungswerts

Führe die folgenden Schritte aus:

  1. Um sich lokal bei deinem Docker-Konto anzumelden, führe den folgenden Befehl aus und gib dann deine neuen Anmeldeinformationen ein:

    $ docker login
  2. Um deine config.json-Datei zu verketten, führe folgenden Befehl aus und kopiere den Wert des von Docker generierten Authentifizierungsschlüssels:

    $ cat ~/.docker/config.json
  3. Führe folgenden Befehl aus, um die Variable ECS_ENGINE_AUTH_DATA zu aktualisieren:

    $ sudo vi /etc/ecs/ecs.config
  4. Ersetze im vi-Editor den Wert der Variablen ECS_ENGINE_AUTH_DATA mit dem Wert des Docker-Authentifizierungsschlüssels. Beispiel:

    ECS_CLUSTER=TestECSCluster
    ECS_ENGINE_AUTH_TYPE=dockercfg
    ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"a2vpdGhhd3M6UGFzc3dvcmQ=","email":"email@example.com"}}
  5. Führe die Schritte im Abschnitt Neustarten deines ECS-Container-Agenten aus.

Neustarten deines ECS-Container-Agenten

Führe die folgenden Schritte aus:

  1. Um deinen ECS-Container-Agenten neu zu starten, führe einen der folgenden Befehle auf Basis der Amazon Machine Images (AMIs) aus, die deine Container-Instances ausführen.
    ECS-optimierte AMIs auf Amazon Linux 2:
    $ sudo systemctl restart ecs
    Hinweis: Amazon Linux 1 erreichte am 31. Dezember 2023 sein End of Life. Amazon Linux AMI erhält keine Sicherheits-Updates oder Bugfixes mehr. Weitere Informationen findest du unter Update zum End of Life des Amazon Linux AMI.
    ECS-optimierte AMIs auf Amazon Linux:
    $ sudo stop ecs && sudo start ecs
    Hinweis: Um die Datei /etc/ecs/ecs.config auf anderen Container-Instances in deinem ECS-Cluster zu aktualisieren, siehe Aktualisieren der Anmeldeinformationen für dein privates Repository mit Umgebungsvariablen. Folge dann dem Aktualisierungsprozess für jede Container-Instance.
  2. Schließe die Schritte im Abschnitt Testen der aktualisierten Anmeldeinformationen für das private Repository ab.

Testen der aktualisierten Anmeldeinformationen für dein privates Repository

Hinweis: Im folgenden Testbeispiel wird ein aktualisiertes Bild in einem Cluster bereitgestellt.

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-ECS-Konsole.
  2. Wähle im Navigationsbereich Cluster und dann deinen Cluster aus.
  3. Wähle deinen Service aus und klicke auf Aktualisieren.
  4. Markiere das Kontrollkästchen Neue Bereitstellung erzwingen.
  5. Wähle Aktualisieren aus.
  6. Überprüfe im Tab Bereitstellungen die neue Bereitstellung. Amazon ECS stoppt nach und nach Aufgaben im Rahmen der vorherigen Bereitstellung. Anschließend startet Amazon ECS die Aufgaben im Rahmen der neuen Bereitstellung neu, während ECS versucht, ein neues Bild abzurufen.
    Hinweis: Wenn du Aufgaben vom Typ EC2 Launch verwendest, muss dein Cluster über genügend Ressourcen verfügen, um eine fortlaufende Aktualisierung als Bereitstellungstyp durchzuführen.
  7. Öffne den Tab Aufgaben und überprüfe jede Aufgabe und ihren Status.

Wenn der neue Aufgabenstatus Wird ausgeführt ist, hat der Service die Aufgabe erfolgreich und ohne Fehler aktualisiert.

Wenn der letzte Status der neuen Aufgabe auf Angehalten | Aufgabe konnte nicht gestartet werden gesetzt wird, hat der Service diese Aufgabe aktualisiert und ist dann auf einen Fehler gestoßen. Der ECS-Container-Agent kann kein neues Container-Image abrufen und verwendet das alte zwischengespeicherte Image. Stelle sicher, dass die Anmeldeinformationen aktualisiert wurden, und führe dann eine weitere Aktualisierung der Service-Bereitstellung durch.

Hinweis: Um die vollständigen Details deiner Aufgabe anzuzeigen und den Fehler „pull access denied“ zu sehen, wähle die ID der fehlgeschlagenen Aufgabe aus. Wähle auf der Seite Beschreibung unter Container die Option Angehalten aus.

Beispiel für eine Fehlermeldung:

„CannotPullContainerError: Error response from daemon: pull access denied for user/reponame, repository does not exist or may require 'docker login'“

Ähnliche Informationen

Amazon ECS container agent configuration

Authentication formats

AWS OFFICIALAktualisiert vor einem Jahr