Zugreifen auf Ressourcen AWS-Konten in anderen In-Step-Funktionen - AWS Step Functions

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.

Zugreifen auf Ressourcen AWS-Konten in anderen In-Step-Funktionen

Step Functions bietet kontoübergreifenden Zugriff auf Ressourcen, die AWS-Konten in Ihren Workflows unterschiedlich konfiguriert sind. Mithilfe der Step Functions Functions-Dienstintegrationen können Sie jede kontoübergreifende AWS Ressource aufrufen, auch wenn diese AWS-Service keine ressourcenbasierten Richtlinien oder kontenübergreifenden Aufrufe unterstützt.

Nehmen wir zum Beispiel an, Sie besitzen zwei Geräte AWS-Konten, die als Entwicklung und Testen bezeichnet werden. AWS-Region Mithilfe des kontoübergreifenden Zugriffs kann Ihr Workflow im Entwicklungskonto auf Ressourcen wie Amazon S3 S3-Buckets, Amazon DynamoDB-Tabellen und Lambda-Funktionen zugreifen, die im Testkonto verfügbar sind.

Wichtig

IAM-Rollen und ressourcenbasierte Richtlinien delegieren den Zugriff auf Konten nur innerhalb einer einzelnen Partition. Nehmen wir zum Beispiel an, Sie haben ein Konto in US West (Nordkalifornien) in der Standardpartition aws. Sie haben auch ein Konto in China (Peking) in der aws-cn-Partition. Sie können keine ressourcenbasierte Amazon S3-Richtlinie in Ihrem Konto in China (Peking) verwenden, um Benutzern in Ihrem Standard-aws-Konto den Zugriff zu ermöglichen.

Weitere Informationen zum kontoübergreifenden Zugriff finden Sie unter Logik zur kontenübergreifenden Bewertung von Richtlinien im IAM-Benutzerhandbuch.

Obwohl jeder die vollständige Kontrolle über seine eigenen Ressourcen AWS-Konto behält, können Sie mit Step Functions Schritte in Ihren Workflows neu organisieren, austauschen, hinzufügen oder entfernen, ohne Code anpassen zu müssen. Sie können dies auch dann tun, wenn sich die Prozesse ändern oder Anwendungen weiterentwickeln.

Sie können auch Ausführungen von verschachtelten Zustandsmaschinen aufrufen, sodass sie für verschiedene Konten verfügbar sind. Auf diese Weise werden Ihre Arbeitsabläufe effizient getrennt und isoliert. Wenn Sie das .syncServiceintegrationsmuster in Ihren Workflows verwenden, die auf einen anderen Step Functions-Workflow in einem anderen Konto zugreifen, verwendet Step Functions Polling, das Ihr zugewiesenes Kontingent verbraucht. Weitere Informationen finden Sie unter Ausführen einer Aufgabe (.sync).

Anmerkung

Derzeit sind die regionsübergreifende AWS SDK-Integration und der regionsübergreifende AWS Ressourcenzugriff in Step Functions nicht verfügbar.

Wichtige kontenübergreifende Ressourcenkonzepte

Rolle bei der Ausführung

Eine IAM-Rolle, die Step Functions verwendet, um Code auszuführen und auf AWS Ressourcen zuzugreifen, z. B. die Invoke-Aktion der AWS Lambda Funktion.

Serviceintegration

Die API-Aktionen für die AWS SDK-Integration, die von einem Task Status in Ihren Workflows aus aufgerufen werden können.

Quellkonto

Ein AWS-Konto , dem die Zustandsmaschine gehört und deren Ausführung gestartet hat.

Zielkonto

Ein AWS-Konto , zu dem Sie kontoübergreifende Anrufe tätigen.

Zielrolle

Eine IAM-Rolle im Zielkonto, die die Zustandsmaschine für Aufrufe von Ressourcen übernimmt, die dem Zielkonto gehören.

Einen Job ausführen (.sync)

Ein Dienstintegrationsmuster, das zum Aufrufen von Diensten verwendet wird, wie AWS Batch z. Außerdem wartet eine Step Functions Functions-Zustandsmaschine darauf, dass ein Job abgeschlossen ist, bevor sie zum nächsten Status übergeht. Um anzugeben, dass Step Functions warten soll, fügen Sie das .sync Suffix in das Resource Feld in Ihrer Task Statusdefinition an.

Kontenübergreifende Ressourcen aufrufen

Gehen Sie wie folgt vor, um eine kontoübergreifende Ressource in Ihren Workflows aufzurufen:

  1. Erstellen Sie eine IAM-Rolle in dem Zielkonto, das die Ressource enthält. Diese Rolle gewährt dem Quellkonto, das die Zustandsmaschine enthält, Berechtigungen für den Zugriff auf die Ressourcen des Zielkontos.

  2. Geben Sie in der Definition des Task Status die IAM-Zielrolle an, die von der Zustandsmaschine übernommen werden soll, bevor die kontoübergreifende Ressource aufgerufen wird.

  3. Ändern Sie die Vertrauensrichtlinie in der Ziel-IAM-Rolle, sodass das Quellkonto diese Rolle vorübergehend übernehmen kann. Die Vertrauensrichtlinie muss den Amazon-Ressourcennamen (ARN) der Zustandsmaschine enthalten, die im Quellkonto definiert ist. Definieren Sie außerdem die entsprechenden Berechtigungen in der IAM-Zielrolle, um die AWS Ressource aufzurufen.

  4. Aktualisieren Sie die Ausführungsrolle des Quellkontos so, dass sie die erforderliche Berechtigung für die Übernahme der Ziel-IAM-Rolle enthält.

Ein Beispiel finden Sie Zugreifen auf kontenübergreifende AWS Ressourcen in Step Functions in den Tutorials.

Anmerkung

Sie können Ihren Zustandsmaschine so konfigurieren, dass er eine IAM-Rolle für den Zugriff auf Ressourcen von mehreren AWS-Kontenübernimmt. Eine Zustandsmaschine kann jedoch jeweils nur eine IAM-Rolle übernehmen.

Konzept für den Zugriff auf kontenübergreifende Ressourcen

Kontoübergreifender Zugriff für das .sync-Integrationsmuster

Wenn Sie die .sync Serviceintegrationsmuster in Ihren Workflows verwenden, fragt Step Functions die aufgerufene kontenübergreifende Ressource ab, um zu bestätigen, dass die Aufgabe abgeschlossen ist. Dies führt zu einer leichten Verzögerung zwischen der tatsächlichen Abschlusszeit der Aufgabe und dem Zeitpunkt, zu dem Step Functions die Aufgabe als abgeschlossen erkennt. Die Ziel-IAM-Rolle benötigt die erforderlichen Berechtigungen für einen .sync Aufruf, um diese Abfrageschleife abzuschließen. Zu diesem Zweck muss die Ziel-IAM-Rolle über eine Vertrauensrichtlinie verfügen, die es dem Quellkonto ermöglicht, diese zu übernehmen. Darüber hinaus benötigt die Ziel-IAM-Rolle die erforderlichen Berechtigungen, um die Abfrageschleife abzuschließen.

Anmerkung

Für verschachtelte Express-Workflows wird dies derzeit arn:aws:states:::states:startExecution.sync nicht unterstützt. Verwenden Sie stattdessen arn:aws:states:::aws-sdk:sfn:startSyncExecution.

Aktualisierung der Vertrauensrichtlinie für .sync-Aufrufe

Aktualisieren Sie die Vertrauensrichtlinie Ihrer IAM-Zielrolle, wie im folgenden Beispiel gezeigt. Das sts:ExternalId Feld steuert außerdem, wer die Rolle übernehmen kann. Der Name der Zustandsmaschine darf nur Zeichen enthalten, die die AWS Security Token Service AssumeRole API unterstützt. Weitere Informationen finden Sie unter AssumeRole in der AWS Security Token Service -API-Referenz.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::sourceAccountID:role/InvokeRole", }, "Condition": { "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-2:sourceAccountID:stateMachine:stateMachineName" } } } ] }

Für .sync-Aufrufe sind Berechtigungen erforderlich

Um die für Ihre Zustandsmaschine erforderlichen Berechtigungen zu gewähren, aktualisieren Sie die erforderlichen Berechtigungen für die IAM-Zielrolle. Weitere Informationen finden Sie unter So generiert Step Functions IAM-Richtlinien für integrierte Dienste. Die EventBridge Amazon-Berechtigungen aus den Beispielrichtlinien sind nicht erforderlich. Um beispielsweise eine Zustandsmaschine zu starten, fügen Sie die folgenden Berechtigungen hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:region:accountID:stateMachine:stateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": [ "arn:aws:states:region:accountID:execution:stateMachineName:*" ] } ] }