Kontenübergreifender Zugriff AWS Ressourcen in Step Functions - 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.

Kontenübergreifender Zugriff AWS Ressourcen in Step Functions

Mit der Unterstützung für kontoübergreifenden Zugriff in Step Functions können Sie Ressourcen gemeinsam nutzen, die in verschiedenen Konfigurationen konfiguriert sind AWS-Konten. In diesem Tutorial führen wir Sie durch den Prozess des Zugriffs auf eine kontoübergreifende Lambda-Funktion, die in einem Konto namens Production definiert ist. Diese Funktion wird von einer Zustandsmaschine in einem Konto namens Development aus aufgerufen. In diesem Tutorial wird das Entwicklungskonto als Quellkonto bezeichnet und das Produktionskonto ist das Zielkonto, das die IAM Zielrolle enthält.

Zunächst geben Sie in der Definition Ihres Task Bundesstaates die IAM Zielrolle an, die die Zustandsmaschine annehmen muss, bevor sie die kontoübergreifende Lambda-Funktion aufruft. Ändern Sie dann die Vertrauensrichtlinie in der IAM Zielrolle, sodass das Quellkonto vorübergehend die Zielrolle übernehmen kann. Außerdem, um das aufzurufen AWS Ressource, definieren Sie die entsprechenden Berechtigungen in der IAM Zielrolle. Aktualisieren Sie abschließend die Ausführungsrolle des Quellkontos, um die erforderliche Berechtigung für die Übernahme der Zielrolle anzugeben.

Sie können Ihren Zustandsmaschine so konfigurieren, dass er eine IAM Rolle für den Zugriff auf Ressourcen aus mehreren Quellen übernimmt AWS-Konten. Eine Zustandsmaschine kann jedoch auf der Grundlage der Definition des Task Staates jeweils nur eine IAM Rolle übernehmen.

Anmerkung

Derzeit regionsübergreifend AWS SDKIntegration und regionsübergreifend AWS Der Ressourcenzugriff ist in Step Functions nicht verfügbar.

Voraussetzungen

  • In diesem Tutorial wird am Beispiel einer Lambda-Funktion demonstriert, wie der kontenübergreifende Zugriff eingerichtet wird. Sie können jede andere verwenden AWS Ressource, aber stellen Sie sicher, dass Sie die Ressource in einem anderen Konto konfiguriert haben.

    Wichtig

    IAMRollen und ressourcenbasierte Richtlinien delegieren den Zugriff auf Konten nur innerhalb einer einzigen 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.

  • Notieren Sie sich den Amazon-Ressourcennamen (ARN) der kontoübergreifenden Ressource in einer Textdatei. Später in diesem Tutorial werden Sie dies ARN in der Zustandsdefinition Ihrer Zustandsmaschine Task angeben. Das Folgende ist ein Beispiel für eine Lambda-FunktionARN:

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Stellen Sie sicher, dass Sie die IAM Zielrolle erstellt haben, die die Zustandsmaschine übernehmen muss.

Schritt 1: Aktualisieren Sie die Aufgabenstatusdefinition, um die Zielrolle anzugeben

Fügen Sie im Task Status Ihres Workflows ein Credentials Feld hinzu, das die Identität enthält, die die Zustandsmaschine annehmen muss, bevor sie die kontoübergreifende Lambda-Funktion aufruft.

Das folgende Verfahren zeigt, wie Sie auf eine kontoübergreifende Lambda-Funktion zugreifen, die aufgerufen wird. Echo Sie können jeden aufrufen AWS Ressource, indem Sie diese Schritte befolgen.

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

  2. Wählen Sie auf der Seite „Erstellungsmethode auswählen“ die Option Workflow visuell gestalten aus und behalten Sie alle Standardauswahlen bei.

  3. Um Workflow Studio zu öffnen, wählen Sie Weiter.

  4. Ziehen Sie auf der Registerkarte Aktionen einen Task Status per Drag-and-Drop auf die Arbeitsfläche. Dadurch wird die kontoübergreifende Lambda-Funktion aufgerufen, die diesen Status verwendet. Task

  5. Gehen Sie auf der Registerkarte Konfiguration wie folgt vor:

    1. Benennen Sie den Status um inCross-account call.

    2. Wählen Sie für Funktionsname die Option Funktionsnamen eingeben aus, und geben Sie dann die Lambda-Funktion ARN in das Feld ein. Beispiel, arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. Geben Sie unter IAM Rolle ARN bereitstellen die IAM Zielrolle ARN an. Beispiel, arn:aws:iam::111122223333:role/LambdaRole.

      Tipp

      Alternativ können Sie auch einen Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in der JSON Statuseingabe angeben, die die Rolle enthält. IAM ARN Wählen Sie dazu Get IAM role ARN at runtime from state input (Rolle zur Laufzeit aus Statuseingabe abrufen). Ein Beispiel für die Angabe eines Werts mithilfe eines Referenzpfads finden Sie unterJSONPathAls IAM Rolle angeben ARN.

  6. Wählen Sie Weiter.

  7. Wählen Sie auf der Seite „Generierten Code überprüfen“ die Option Weiter aus.

  8. Geben Sie auf der Seite „Einstellungen für Zustandsmaschine angeben“ Details für den neuen Zustandsmaschine an, z. B. einen Namen, Berechtigungen und eine Protokollierungsebene.

  9. Wählen Sie Create State Machine (Zustandsautomaten erstellen).

  10. Notieren Sie sich die IAM Rolle der Zustandsmaschine ARN und die Zustandsmaschine ARN in einer Textdatei. Sie müssen diese ARNs in der Vertrauensrichtlinie des Zielkontos angeben.

Ihre Task Bundesstaatendefinition sollte jetzt der folgenden Definition ähneln.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo", }, "End": true } } }

Schritt 2: Aktualisieren Sie die Vertrauensrichtlinie der Zielrolle

Die IAM Rolle muss im Zielkonto vorhanden sein und Sie müssen die zugehörige Vertrauensrichtlinie ändern, damit das Quellkonto diese Rolle vorübergehend übernehmen kann. Darüber hinaus können Sie steuern, wer die IAM Zielrolle übernehmen kann.

Nachdem Sie die Vertrauensstellung erstellt haben, kann ein Benutzer aus dem Quellkonto die AWS Security Token Service (AWS STS) AssumeRoleAPIBetrieb. Dieser Vorgang stellt temporäre Sicherheitsanmeldedaten bereit, die den Zugriff auf ermöglichen AWS Ressourcen in einem Zielkonto.

  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich der Konsole Rollen aus und verwenden Sie dann das Suchfeld, um nach der IAM Zielrolle zu suchen. Beispiel, LambdaRole.

  3. Wählen Sie die Registerkarte Trust relationships (Vertrauensstellungen).

  4. Wählen Sie Vertrauensrichtlinie bearbeiten aus und fügen Sie die folgende Vertrauensrichtlinie ein. Stellen Sie sicher, dass Sie das ersetzen AWS-Konto Nummer und IAM RolleARN. Das sts:ExternalId Feld steuert außerdem, wer die Rolle übernehmen kann. Der Name der Zustandsmaschine darf nur Zeichen enthalten, die AWS Security Token Service AssumeRoleAPIunterstützt. Weitere Informationen finden Sie AssumeRolein der AWS Security Token Service APIReferenz.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExecutionRole" // The source account's state machine execution role ARN }, "Condition": { // Control which account and state machine can assume the target IAM role "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-1:123456789012:stateMachine:testCrossAccount" //// ARN of the state machine that will assume the role. } } } ] }
  5. Lassen Sie dieses Fenster geöffnet und fahren Sie mit dem nächsten Schritt fort, um weitere Aktionen durchzuführen.

Schritt 3: Fügen Sie die erforderliche Berechtigung in der Zielrolle hinzu

Die in den IAM Richtlinien enthaltenen Berechtigungen bestimmen, ob eine bestimmte Anfrage zulässig oder verweigert wird. Die IAM Zielrolle muss über die richtige Berechtigung zum Aufrufen der Lambda-Funktion verfügen.

  1. Wählen Sie die Registerkarte Berechtigungen.

  2. Wählen Sie Add permissions (Berechtigungen hinzufügen) und dann Create inline policy (Inline-Richtlinie erstellen) aus.

  3. Wählen Sie die JSONRegisterkarte und ersetzen Sie den vorhandenen Inhalt durch die folgende Berechtigung. Stellen Sie sicher, dass Sie Ihre Lambda-Funktion ARN ersetzen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:Echo" // The cross-account AWS resource being accessed } ] }
  4. Wählen Sie Richtlinie prüfen.

  5. Geben Sie auf der Seite „Richtlinie überprüfen“ einen Namen für die Berechtigung ein und wählen Sie dann Richtlinie erstellen aus.

Schritt 4: Fügen Sie der Ausführungsrolle die Berechtigung hinzu, um die Zielrolle anzunehmen

Step Functions generiert die AssumeRoleRichtlinie nicht automatisch für alle kontoübergreifenden Serviceintegrationen. Sie müssen der Ausführungsrolle der Zustandsmaschine die erforderliche Berechtigung hinzufügen, damit sie eine IAM Zielrolle in einer oder mehreren Rollen übernehmen kann AWS-Konten.

  1. Öffnen Sie die Ausführungsrolle Ihres Zustandsmaschinen in der IAM Konsole unter https://console.aws.amazon.com/iam/. So gehen Sie vor:

    1. Öffnen Sie die Zustandsmaschine, die Sie in Schritt 1 erstellt haben, im Quellkonto.

    2. Wählen Sie auf der Detailseite des State Machine die Option IAMRolle ausARN.

  2. Wählen Sie auf der Registerkarte Berechtigungen die Option Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.

  3. Wählen Sie die JSONRegisterkarte aus und ersetzen Sie den vorhandenen Inhalt durch die folgende Berechtigung. Stellen Sie sicher, dass Sie Ihre Lambda-Funktion ARN ersetzen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. Wählen Sie Richtlinie prüfen.

  5. Geben Sie auf der Seite „Richtlinie überprüfen“ einen Namen für die Berechtigung ein und wählen Sie dann Richtlinie erstellen aus.