Tutorial: Zugriff auf kontoübergreifende Ressourcen AWS - 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.

Tutorial: Zugriff auf kontoübergreifende Ressourcen AWS

Mit der Unterstützung für kontoübergreifenden Zugriff in Step Functions können Sie Ressourcen gemeinsam nutzen, die unterschiedlich AWS-Konten konfiguriert sind. 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 Ziel-IAM-Rolle 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 anschließend die Vertrauensrichtlinie in der Ziel-IAM-Rolle, sodass das Quellkonto vorübergehend die Zielrolle übernehmen kann. Um die AWS Ressource aufzurufen, definieren Sie außerdem die entsprechenden Berechtigungen in der Ziel-IAM-Rolle. 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 AWS-Konten Quellen annimmt. Eine Zustandsmaschine kann jedoch, basierend auf der Definition des Task Status, jeweils nur eine IAM-Rolle übernehmen.

Anmerkung

Derzeit sind die regionsübergreifende AWS SDK-Integration und der regionsübergreifende AWS Ressourcenzugriff 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 AWS Ressource verwenden, stellen Sie jedoch sicher, dass Sie die Ressource in einem anderen Konto konfiguriert haben.

    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.

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

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Stellen Sie sicher, dass Sie die Ziel-IAM-Rolle 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 aufgerufene kontenübergreifende Lambda-Funktion zugreifen. Echo Sie können jede AWS Ressource aufrufen, indem Sie die folgenden Schritte ausführen.

  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 Funktionsname eingeben aus, und geben Sie dann den ARN der Lambda-Funktion in das Feld ein. z. B. arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. Geben Sie für Provide IAM role ARN den ARN der Ziel-IAM-Rolle an. z. B. arn:aws:iam::111122223333:role/LambdaRole.

      Tipp

      Alternativ können Sie auch einen Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in der JSON-Eingabe des Bundesstaates angeben, die den ARN der IAM-Rolle enthält. Wählen Sie dazu Get IAM role ARN at runtime from state input aus. Ein Beispiel für die Angabe eines Werts mithilfe eines Referenzpfads finden Sie unterJsonPath als IAM-Rollen-ARN angeben.

  6. Wählen Sie Weiter aus.

  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 den IAM-Rollen-ARN der Zustandsmaschine und den ARN der Zustandsmaschine 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 dessen Vertrauensrichtlinie ändern, damit das Quellkonto diese Rolle vorübergehend übernehmen kann. Darüber hinaus können Sie steuern, wer die Ziel-IAM-Rolle übernehmen kann.

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

  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. z. B. LambdaRole.

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

  4. Wählen Sie Vertrauensrichtlinie bearbeiten und fügen Sie die folgende Vertrauensrichtlinie ein. Achten Sie darauf, die AWS-Konto Nummer und den ARN der IAM-Rolle zu ersetzen. 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 AssumeRolein der AWS Security Token Service API-Referenz.

    { "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 Berechtigungen in den IAM-Richtlinien bestimmen, ob eine bestimmte Anfrage zulässig oder verweigert wird. Die Ziel-IAM-Rolle 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 Registerkarte JSON und ersetzen Sie den vorhandenen Inhalt durch die folgende Berechtigung. Stellen Sie sicher, dass Sie den ARN Ihrer Lambda-Funktion 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 Ihrer Zustandsmaschine 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 der Statusmaschine die IAM-Rolle ARN aus.

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

  3. Wählen Sie die Registerkarte JSON und ersetzen Sie den vorhandenen Inhalt durch die folgende Berechtigung. Stellen Sie sicher, dass Sie den ARN Ihrer Lambda-Funktion 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.