Wie behebe ich den Fehler „ECS was unable to assume the role“ (ECS konnte die Rolle nicht übernehmen) beim Ausführen von Amazon-ECS-Aufgaben?

Zuletzt aktualisiert: 04.03.2022

Ich erhalte den folgenden Fehler, wenn ich Aufgaben in Amazon Elastic Container Service (Amazon ECS)/AWS Fargate ausführe:

ECS was unable to assume the role 'arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyyy' that was provided for this task. Please verify that the role being passed has the proper trust relationship and permissions and that your IAM user has permissions to pass this role. (ECS konnte die für diese Aufgabe vorgesehene Rolle „arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyy“ nicht übernehmen. Stellen Sie sicher, dass die vergebene Rolle über die richtige Vertrauensbeziehung und die richtigen Berechtigungen verfügt und dass Ihr IAM-Benutzer die Berechtigung hat, diese Rolle zu vergeben.)

Lösung

Dieser Fehler wird aus mindestens einem der folgenden Gründe angezeigt:

  • Die in der Aufgabendefinition angegebene AWS Identity and Access Management (IAM)-Rolle für die Aufgabenausführung oder die Aufgabenrolle ist nicht vorhanden.
  • Die in der Aufgabendefinition angegebene IAM-Rolle für die Aufgabenausführung oder die Aufgabenrolle hat nicht die richtige Richtlinie der Vertrauensbeziehung.

Prüfen Sie, ob die Aufgabenausführungsrolle oder Aufgabenrolle vorhanden ist.

Prüfen Sie mithilfe der Konsole, ob die in der Aufgabendefinition definierte Aufgabenausführungsrolle oder Aufgabenrolle vorhanden ist. Gehen Sie dabei wie folgt vor:

  1. Öffnen Sie die IAM-Konsole.
  2. Wählen Sie Rollen.
  3. Durchsuchen Sie die Liste der Rollen nach der Aufgabenausführungsrolle oder Aufgabenrolle, die Sie in die Aufgabendefinition aufgenommen haben.

Führen Sie mithilfe von AWS Command Line Interface (AWS CLI) den folgenden Befehl aus, um zu überprüfen, ob die Aufgabenausführungsrolle oder Aufgabenrolle vorhanden ist:

Hinweis: Mit diesem Befehl werden Informationen über die angegebene IAM-Rolle abgerufen.

aws iam get-role --role-name example-task-execution-role

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Wenn die Rolle nicht existiert, wird folgender Fehler angezeigt:

An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name example-task-execution-role cannot be found.

Führen Sie in diesem Fall einen der folgenden Schritte aus:

Überprüfen Sie, ob die Aufgabenausführungsrolle oder die Aufgabenrolle in der Aufgabendefinition über die richtige Richtlinie der Vertrauensbeziehung verfügt.

Stellen Sie sicher, dass die Richtlinie der Vertrauensbeziehung für die Rolle den Service ecs-tasks.amazonaws.com zulässt. Dies ist erforderlich, damit die Amazon-ECS-Aufgabe die angegebene IAM-Rolle übernehmen kann.

Gehen Sie wie folgt vor, um die Richtlinie der Vertrauensbeziehung zu überprüfen und bei Bedarf zu aktualisieren:

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie im Navigationsbereich Rollen aus.

3.    Durchsuchen Sie die Liste der Rollen nach der Aufgabenausführungsrolle oder Aufgabenrolle, die Sie in Ihre Aufgabendefinition aufgenommen haben.

4.    Wählen Sie die Rolle aus.

5.    Wählen Sie Vertrauensbeziehungen.

6.    Stellen Sie sicher, dass die Vertrauensbeziehung für die Rolle die folgende Richtlinie enthält:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

7.    Wenn die Vertrauensbeziehung mit der Richtlinie übereinstimmt, wählen Sie Abbrechen. Wählen Sie andernfalls Vertrauensbeziehung bearbeiten.

8.    Kopieren Sie die vorherige Richtlinie in das Fenster Richtliniendokument und wählen Sie dann Vertrauensrichtlinie aktualisieren.