Wie kann ich meine Amazon ECS-Aufgabe so konfigurieren, dass sie eine IAM-Rolle in einem anderen AWS-Konto übernimmt?
Ich möchte, dass meine Amazon Elastic Container Service (Amazon ECS)-Aufgabe eine AWS Identity and Access Management (IAM)-Rolle in einem anderen Konto übernimmt.
Kurzbeschreibung
Sie können Ihre Amazon ECS-Aufgabe so einrichten, dass sie eine IAM-Rolle in einem anderen Konto übernimmt, um Folgendes zu tun:
- Greifen Sie auf Ressourcen zu, z. B. auf einen Amazon Simple Storage Service (Amazon S3)-Bucket
- Führen Sie Aufgaben wie das Beschreiben einer Ressource und das Starten oder Stoppen von Instances über API-Aufrufe aus.
Gehen Sie wie folgt vor, damit Ihre Amazon ECS-Aufgabe eine IAM-Rolle in einem anderen AWS-Konto übernehmen kann:
- Konfigurieren Sie eine IAM-Rolle im Quellkonto.
- Ändern Sie die Vertrauensrichtlinie der IAM-Rolle des Zielkontos, damit die IAM-Rolle des Quellkontos die IAM-Rolle des Zielkontos übernehmen kann.
- Erstellen Sie eine Aufgabendefinition im Quellkonto und definieren Sie die in Schritt 1 erstellte IAM-Rolle als Amazon ECS-Aufgabenrolle.
Behebung
Die in diesem Artikel verwendeten Beispiele beziehen sich auf zwei verschiedene AWS-Konten:
- Ein Quellkonto, das die Amazon ECS-Aufgabe hostet: 1111222233334444
- Ein Zielkonto, das die IAM-Rolle enthält, wie z. B. destination-account-role, die von der Amazon ECS-Aufgabe übernommen wird: 5555666677778888
Konfigurieren der IAM-Rolle im Quellkonto
Fügen Sie Ihrer Amazon ECS-Aufgabenrolle die folgende Richtlinienerklärung hinzu, damit die Rolle die IAM-Rolle im Zielkonto übernehmen kann:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::5555666677778888:role/destination-account-role" } }
Hinweis:
- Ersetzen Sie 5555666677778888 durch die Konto-ID der kontoübergreifenden Rolle, die Ihre Aufgabe annehmen muss.
- Ersetzen Sie destination-account-role durch den Namen der übernommenen Rolle.
Ändern der Vertrauensrichtlinie der IAM-Rolle im Zielkonto
Fügen Sie die folgende Richtlinienerklärung der Vertrauensrichtlinie Ihrer kontoübergreifenden IAM-Rolle (destination-account-role) im Zielkonto hinzu:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1111222233334444:role/my-ECS-task-role" }, "Action": "sts:AssumeRole" }] }
Hinweis:
- Ersetzen Sie 1111222233334444 durch die Konto-ID des Quellkontos, in dem die IAM-Rolle der ECS-Aufgabe existiert.
- Ersetzen Sie my-ECS-task-role durch den Namen Ihrer ECS-IAM-Task-Rolle.
Erstellen einer Aufgabendefinition
Erstellen Sie eine Aufgabendefinitionsdatei, die der folgenden ähnelt:
{ "containerDefinitions": [ { "name": "test", "image": "your-test-image", "cpu": 100, "memory": 200, "essential": true } ], "family": "verify-assume-cross-account-role", "taskRoleArn": "arn:aws:iam::1111222233334444:role/my-ECS-task-role" }
Hinweis: Verwenden Sie für taskRoleArn den ARN der IAM-Rolle des Quellkontos.
Um die Aufgabendefinition zu registrieren, führen Sie den folgenden Befehl in der Datei example-task-def.json aus“
aws ecs register-task-definition --cli-input-json file://example-task-def.json
**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Verwenden Sie nach den vorherigen Schritten die AWS CLI, um eine eigenständige Aufgabe auszuführen, um eine IAM-Rolle für das Zielkonto zu übernehmen. Sie können auch die Einstellungen von credential\ _source in der Konfigurationsdatei verwenden. Geben Sie an, wo die AWS CLI Anmeldeinformationen für die Übernahme der dem ECS-Container zugewiesenen IAM-Rolle finden kann. Weitere Informationen finden Sie unter Assume role credential provider.
Stellen Sie sicher, dass der Container innerhalb der Aufgabe die IAM-Rolle im Zielkonto übernehmen und auf die Ressource zugreifen kann
- Verwenden Sie die Aufgabendefinition, die Sie erstellt haben, um die Aufgabe auszuführen:
Wenn Sie die Aufgabe in Amazon Elastic Compute Cloud (Amazon EC2) ausführen, verwenden Sie den Befehl docker exec, um die Tests durchzuführen.
Wenn Sie die Aufgabe auf AWS Fargate ausführen, verwenden Sie ECS Exec, um die Tests durchzuführen. - Konfigurieren Sie die AWS-CLI-Konfigurationsdatei und stellen Sie dann sicher, dass die Aufgabe die IAM-Rolle im Zielkonto annimmt:
Using the ECS exec command to access the container $ aws ecs execute-command --cluster example-cluster --task example-taskID --container test --interactive --command "/bin/bash" The Session Manager plugin was installed successfully. Use the AWS CLI to start a session. Starting session with SessionId: ecs-execute-command-064a40c5149cecc32 # Create AWS CLI config file bash-4.2# mkdir /root/.aws bash-4.2# cat <<EOF > /root/.aws/config [profile cross-account] role_arn = arn:aws:iam::5555666677778888:role/destination-account-role credential_source = EcsContainer EOF # Check the current task IAM role bash-4.2# aws sts get-caller-identity { "UserId": "AROA4SHE6JAGEAYNUH6ST:8ee54a7f5c474a3f93ee28474486402f", "Account": "1111222233334444", "Arn": "arn:aws:sts::1111222233334444:assumed-role/my-ECS-task-role/8ee54a7f5c474a3f93ee28474486402f" } # Assume the cross-account IAM role bash-4.2# aws sts get-caller-identity --profile cross-account { "UserId": "AROA3A44JRHY6FFSMMJKN:botocore-session-1647426859", "Account": "5555666677778888", "Arn": "arn:aws:sts::5555666677778888:assumed-role/destination-account-role/botocore-session-1647426859" } # Verify that you can list the resources in cross-account in the task bash-4.2# aws ecs list-clusters --profile cross-account { "clusterArns": [ "arn:aws:ecs:us-east-1:5555666677778888:cluster/default" ] }
Wenn Ihre Ausgaben dem vorherigen Beispiel ähneln, kann die ECS-Aufgabe im Konto 1111222233334444 die IAM-Rolle im Konto 5555666677778888 annehmen. Die ECS-Aufgabe kann die IAM-Rolle übernehmen, um die ECS-Cluster-Ressourcen aufzulisten.
Ähnliche Informationen
IAM-Tutorial: Delegieren Sie den Zugriff über AWS-Konten mithilfe von IAM-Rollen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren