Fehlerbehebung bei Aktualisierungen der Amazon-ECS-Bereitstellungsstrategie - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung bei Aktualisierungen der Amazon-ECS-Bereitstellungsstrategie

In diesem Abschnitt finden Sie Lösungen für häufig auftretende Probleme, die bei der Migration von Bereitstellungsstrategien auftreten können.

Mehrere Service-Revisionen oder Aufgabensätze

Die folgenden Probleme beziehen sich auf mehrere Service-Revisionen für eine Bereitstellung.

Mehrere Aufgabensätze bei der Aktualisierung des ECS-Bereitstellungs-Controllers

Fehlermeldung: Updating the deployment controller is not supported when there are multiple tasksets in the service. Please ensure your service has only one taskset and try again.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, den Bereitstellungs-Controller-Typ eines Services mit mehreren aktiven Aufgabensätzen zu ändern. So beheben Sie dieses Problem für den CODE_DEPLOY- oder EXTERNAL-Bereitstellungs-Controller:

  1. Überprüfen Sie die aktuellen Aufgabensätze:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets"
  2. Warten Sie, bis alle laufenden Bereitstellungen abgeschlossen sind.

  3. Erzwingen Sie eine neue Bereitstellung zum Bereinigen von Aufgabensätzen:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
  4. Löschen Sie bei Bedarf zusätzliche Aufgabensätze manuell:

    aws ecs delete-task-set --cluster your-cluster-name --service your-service-name --task-set task-set-id
  5. Wenn nur noch ein Aufgabensatz übrig ist, versuchen Sie erneut, den Bereitstellungs-Controller zu aktualisieren.

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Fehlender primärer Aufgabensatz beim Aktualisieren des ECS-Bereitstellungs-Controllers

Fehlermeldung: Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, den Bereitstellungs-Controller-Typ eines Services zu ändern, der keinen primären Aufgabensatz hat. So beheben Sie dieses Problem

  1. Überprüfen Sie den Service-Status und die Aufgabensätze. ). Wenn ein Aufgabensatz im Service vorhanden ist, sollte er als ACTIVE markiert werden.

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets[*].[status,id]

    Wenn der ACTIVE-Status keine Aufgabensätze enthält, migrieren Sie die Bereitstellung. Weitere Informationen finden Sie unter Migrationsansätze.

  2. Wenn der Service keine laufenden Aufgaben hat, stellen Sie mindestens eine Aufgabe bereit, indem Sie den Service aktualisieren:

    aws ecs update-service-primary-task-set --cluster your-cluster-name --service your-service-name --primary-task-set your-taskset-id

    Dadurch wird der (zuvor ACTIVE) Aufgabensatz im Service als PRIMARY-Status markiert.

  3. Warten Sie, bis die Aufgabe einen stabilen Betriebsstatus erreicht hat. Sie können den Status überprüfen mit:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deployments"
  4. Versuchen Sie erneut, den Bereitstellungs-Controller zu aktualisieren, nachdem für den Service ein primärer Aufgabensatz mit laufenden Aufgaben festgelegt wurde.

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Nichtübereinstimmung zwischen dem Typ der Erkennung von Bereitstellungsfehlern und dem Bereitstellungs-Controller

Die folgenden Probleme beziehen sich auf eine Nichtübereinstimmung zwischen dem Typ der Erkennung von Bereitstellungsfehlern und dem Bereitstellungs-Controller.

Bereitstellungs-Schutzschalter mit einem anderen Controller, als ECS

Fehlermeldung: Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, das Bereitstellungs-Schutzschalter-Feature für einen Service zu aktivieren, der nicht den ECS-Bereitstellungs-Controller verwendet. Der Bereitstellungs-Schutzschalter ist nur mit dem ECS-Bereitstellungs-Controller kompatibel.

  1. Überprüfen Sie den aktuellen Bereitstellungs-Controller Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aktualisieren Sie Ihren Service so, dass er den ECS-Bereitstellungs-Controller verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Nachdem der Service den ECS-Bereitstellungs-Controller verwendet, aktivieren Sie den Bereitstellungs-Schutzschalter:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"

Weitere Informationen finden Sie unter So erkennt der Schutzschalter in Amazon ECS fehlgeschlagene Bereitstellungen.

Alarmbasiertes Rollback mit einem anderen Controller, als ECS

Fehlermeldung: Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, ein alarmbasiertes Rollback für einen Service zu konfigurieren, der nicht den ECS-Bereitstellungs-Controller verwendet. Das alarmbasierte Rollback-Feature ist nur mit dem ECS-Bereitstellungs-Controller kompatibel.

  1. Überprüfen Sie den aktuellen Bereitstellungs-Controller Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aktualisieren Sie Ihren Service so, dass er den ECS-Bereitstellungs-Controller verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Nachdem der Service den ECS-Bereitstellungs-Controller verwendet, konfigurieren Sie das alarmbasierte Rollback:

    aws ecs update-service --cluster your-cluster-name --services your-service-name --deployment-configuration "alarms={alarmNames=[your-alarm-name],enable=true,rollback=true}"

Weitere Informationen finden Sie unter So erkennen CloudWatch Alarme Bereitstellungsfehler bei Amazon ECS.

Nichtübereinstimmung zwischen Service Connect und dem Bereitstellungs-Controller

Die folgenden Probleme beziehen sich auf eine Nichtübereinstimmung zwischen Service Connect und dem Bereitstellungs-Controller.

EXTERNAL-Controller mit Service Connect

Fehlermeldung: The EXTERNAL deployment controller type is not supported for services using Service Connect.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, den EXTERNALBereitstellungs-Controller mit einem Service zu verwenden, für den Service Connect aktiviert ist. Der EXTERNAL-Controller ist nicht mit Service Connect kompatibel.

  1. Prüfen Sie, ob Service Connect für Ihren Service aktiviert ist:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
  2. Wenn Sie den EXTERNAL-Bereitstellungs-Controller verwenden müssen, deaktivieren Sie Service Connect, indem Sie Ihren Service aktualisieren:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
  3. Wenn Sie Service Connect verwenden müssen, verwenden Sie alternativ den ECS-Bereitstellungs-Controller:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Service Connect mit einem anderen Controller, als ECS

Fehlermeldung: Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, Service Connect auf einem Service zu aktivieren, der nicht den ECS-Bereitstellungs-Controller verwendet. Das Service-Connect-Feature ist nur mit dem ECS-Bereitstellungs-Controller kompatibel.

  1. Überprüfen Sie den aktuellen Bereitstellungs-Controller Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aktualisieren Sie Ihren Service so, dass er den ECS-Bereitstellungs-Controller verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Sobald der Service den ECS-Bereitstellungs-Controller verwendet, aktivieren Sie Service Connect:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "enabled=true,namespace=your-namespace"

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Nichtübereinstimmung zwischen Controller-Typ und Planungsstrategie

Die folgenden Probleme beziehen sich auf eine Nichtübereinstimmung zwischen dem Controller-Typ und der Planungsstrategie.

CODE_DEPLOY-Controller mit DAEMON-Planungsstrategie

Fehlermeldung: The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, den CODE_DEPLOY-Bereitstellungs-Controller mit einem Service zu verwenden, der die DAEMON-Planungsstrategie verwendet. Der CODE_DEPLOY-Controller ist nur mit der REPLICA-Planungsstrategie kompatibel.

  1. Überprüfen Sie die aktuelle Planungsstrategie Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Wenn Sie blue/green Bereitstellungen benötigen, ändern Sie Ihren Service so, dass er die REPLICA Planungsstrategie verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Wenn Sie die DAEMON-Planungsstrategie verwenden müssen, können Sie alternativ stattdessen den ECS-Bereitstellungs-Controller verwenden:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

EXTERNAL-Controller mit DAEMON-Planungsstrategie

Fehlermeldung: The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, den EXTERNAL-Bereitstellungs-Controller mit einem ECS-Service zu verwenden, der die DAEMON-Planungsstrategie verwendet. Der EXTERNAL-Controller ist nur mit der REPLICA-Planungsstrategie kompatibel.

  1. Überprüfen Sie die aktuelle Planungsstrategie Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Wenn Sie den EXTERNAL-Bereitstellungs-Controller verwenden müssen, ändern Sie Ihren Service so, dass er die REPLICA-Planungsstrategie verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Wenn Sie die DAEMON-Planungsstrategie verwenden müssen, können Sie alternativ stattdessen den ECS-Bereitstellungs-Controller verwenden:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Service-Registrys mit externem Starttyp

Fehlermeldung: Service registries are not supported for external launch type.

Lösung: Dieser Fehler tritt auf, wenn versucht wird, die Serviceerkennung (Service-Registrys) für einen Service zu konfigurieren, der den EXTERNAL-Starttyp verwendet. Die Serviceerkennung ist nicht mit dem EXTERNAL-Starttyp kompatibel.

  1. Überprüfen Sie den aktuellen Starttyp Ihres Services:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
  2. Wenn Sie die Serviceerkennung benötigen, ändern Sie Ihren Service so, dass er entweder den Starttyp EC2 oder FARGATE verwendet:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --launch-type FARGATE
  3. Wenn Sie den EXTERNAL-Starttyp verwenden müssen, können Sie alternativ die Service-Registry-Konfiguration entfernen:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-registries "[]"

Weitere Informationen finden Sie unter Controller und Strategien für die Bereitstellung von Amazon-ECS-Services.

Eine Bereitstellungs-Controller-Aktualisierung zurücksetzen

Wenn Sie zum vorherigen Bereitstellungs-Controller zurückkehren möchten, können Sie eine der folgenden Aktionen durchführen:

  • Falls Sie diese verwendet haben CloudFormation, können Sie die vorherige Vorlage verwenden, um einen neuen Stack zu erstellen. Weitere Informationen finden Sie unter Erstellen eines Stacks aus im Benutzerhandbuch für CloudFormation .

  • Wenn Sie die Amazon ECS-Konsole oder die verwendet haben AWS CLI, können Sie den Service aktualisieren. Weitere Informationen finden Sie unter Aktualisierung eines Amazon ECS-Service.

    Wenn Sie den Befehl update-service verwenden, verwenden Sie die Option --deployment-controller und setzen Sie sie auf den vorherigen Bereitstellungs-Controller.