Tutoriel : Accès aux AWS ressources entre comptes dans Step Functions - AWS Step Functions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : Accès aux AWS ressources entre comptes dans Step Functions

Grâce à la prise en charge de l'accès entre comptes dans Step Functions, vous pouvez partager des ressources configurées de différentes Comptes AWS manières. Dans ce didacticiel, nous vous expliquons comment accéder à une fonction Lambda entre comptes définie dans un compte appelé Production. Cette fonction est invoquée depuis une machine d'état dans un compte appelé Development. Dans ce didacticiel, le compte de développement est appelé compte source et le compte de production est le compte cible contenant le IAM rôle cible.

Pour commencer, dans la définition de votre Task État, vous spécifiez le IAM rôle cible que la machine à états doit assumer avant d'appeler la fonction Lambda entre comptes. Modifiez ensuite la politique de confiance dans le IAM rôle cible pour permettre au compte source d'assumer temporairement le rôle cible. En outre, pour appeler la AWS ressource, définissez les autorisations appropriées dans le IAM rôle cible. Enfin, mettez à jour le rôle d'exécution du compte source pour spécifier l'autorisation requise pour assumer le rôle cible.

Vous pouvez configurer votre machine d'état pour qu'elle assume un IAM rôle d'accès aux ressources à partir de plusieurs Comptes AWS. Cependant, une machine à états ne peut assumer qu'un seul IAM rôle à la fois en fonction de la définition de Task l'état.

Note

Actuellement, AWS SDK l'intégration entre régions et l'accès aux AWS ressources entre régions ne sont pas disponibles dans Step Functions.

Prérequis

  • Ce didacticiel utilise l'exemple d'une fonction Lambda pour montrer comment configurer l'accès entre comptes. Vous pouvez utiliser n'importe quelle autre AWS ressource, mais assurez-vous de l'avoir configurée dans un autre compte.

    Important

    IAMles rôles et les politiques basées sur les ressources délèguent l'accès entre les comptes uniquement au sein d'une même partition. Par exemple, supposons que vous avez un compte dans la région USA Ouest (Californie du Nord) sur la partition aws standard. Vous avez également un compte dans la région Chine (Beijing) sur la partition aws-cn. Vous ne pouvez pas utiliser une politique basée sur les ressources d’Amazon S3 dans votre compte en Chine (Beijing) pour autoriser l'accès aux utilisateurs de votre compte aws standard.

  • Notez le nom de ressource Amazon (ARN) de la ressource multicompte dans un fichier texte. Plus loin dans ce didacticiel, vous le fournirez ARN dans la définition d'Taskétat de votre machine à états. Voici un exemple de fonction Lambda : ARN

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Assurez-vous d'avoir créé le IAM rôle cible que la machine d'état doit assumer.

Étape 1 : mettre à jour la définition de l'état de la tâche pour spécifier le rôle cible

Dans l'Taskétat de votre flux de travail, ajoutez un Credentials champ contenant l'identité que la machine d'état doit adopter avant d'appeler la fonction Lambda entre comptes.

La procédure suivante explique comment accéder à une fonction Lambda multi-comptes appelée. Echo Vous pouvez appeler n'importe quelle AWS ressource en suivant ces étapes.

  1. Ouvrez la console Step Functions et choisissez Create state machine.

  2. Sur la page Choisir une méthode de création, choisissez Concevez votre flux de travail visuellement et conservez toutes les sélections par défaut.

  3. Pour ouvrir Workflow Studio, choisissez Next.

  4. Dans l'onglet Actions, glissez et déposez un Task état sur le canevas. Cela appelle la fonction Lambda entre comptes qui utilise cet état. Task

  5. Dans l'onglet Configuration, procédez comme suit :

    1. Renommez l'état en. Cross-account call

    2. Pour Nom de la fonction, choisissez Entrer le nom de la fonction, puis entrez la fonction Lambda ARN dans le champ. Par exemple, arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. Pour Provide IAM role ARN, spécifiez le IAM rôle cibleARN. Par exemple, arn:aws:iam::111122223333:role/LambdaRole.

      Astuce

      Vous pouvez également spécifier un chemin de référence vers une paire clé-valeur existante dans l'JSONentrée de l'État qui contient le IAM rôle. ARN Pour ce faire, choisissez Get IAM role ARN at runtime from state input. Pour un exemple de spécification d'une valeur à l'aide d'un chemin de référence, consultezSpécification en JSONPath tant que IAM rôle ARN.

  6. Choisissez Suivant.

  7. Sur la page du code généré par la révision, choisissez Next.

  8. Sur la page Spécifier les paramètres de la machine à états, spécifiez les détails de la nouvelle machine à états, tels que le nom, les autorisations et le niveau de journalisation.

  9. Choisissez Create state machine (Créer une machine d'état).

  10. Notez le IAM rôle de la machine à états ARN et de la machine à états ARN dans un fichier texte. Vous devrez les indiquer ARNs dans la politique de confiance du compte cible.

La définition de votre Task état doit maintenant ressembler à la définition suivante.

{ "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 } } }

Étape 2 : Mettre à jour la politique de confiance du rôle cible

Le IAM rôle doit exister dans le compte cible et vous devez modifier sa politique de confiance pour permettre au compte source d'assumer ce rôle temporairement. En outre, vous pouvez contrôler qui peut assumer le IAM rôle cible.

Après avoir créé la relation de confiance, un utilisateur du compte source peut utiliser l'AssumeRoleAPIopération AWS Security Token Service (AWS STS). Cette opération fournit des informations d'identification de sécurité temporaires qui permettent d'accéder aux AWS ressources d'un compte cible.

  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation de la console, choisissez Rôles, puis utilisez la zone de recherche pour rechercher le IAM rôle cible. Par exemple, LambdaRole.

  3. Choisissez l'onglet Trust relationships.

  4. Choisissez Modifier la politique de confiance et collez la politique de confiance suivante. Assurez-vous de remplacer le Compte AWS numéro et le IAM rôleARN. Le sts:ExternalId champ contrôle également qui peut assumer le rôle. Le nom de la machine à états ne doit inclure que les caractères pris AWS Security Token Service AssumeRole API en charge. Pour plus d'informations, reportez-vous AssumeRoleà la section AWS Security Token Service APIRéférence.

    { "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. Gardez cette fenêtre ouverte et passez à l'étape suivante pour d'autres actions.

Étape 3 : ajouter l'autorisation requise dans le rôle cible

Les autorisations définies dans les IAM politiques déterminent si une demande spécifique est autorisée ou refusée. Le IAM rôle cible doit disposer de l'autorisation appropriée pour appeler la fonction Lambda.

  1. Choisissez l’onglet Permissions (Autorisations).

  2. Sélectionnez Ajouter des autorisations, puis Ajouter la politique.

  3. Choisissez l'JSONonglet et remplacez le contenu existant par l'autorisation suivante. Assurez-vous de remplacer votre fonction Lambda. ARN

    { "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. Choisissez Review policy (Examiner une politique).

  5. Sur la page Révision de la politique, entrez le nom de l'autorisation, puis choisissez Créer une politique.

Étape 4 : Ajouter l'autorisation dans le rôle d'exécution pour assumer le rôle cible

Step Functions ne génère pas automatiquement la AssumeRolepolitique pour toutes les intégrations de services entre comptes. Vous devez ajouter l'autorisation requise dans le rôle d'exécution de la machine à états pour lui permettre d'assumer un IAM rôle cible dans un ou plusieurs rôles Comptes AWS.

  1. Ouvrez le rôle d'exécution de votre machine à états dans la IAM console à l'adresse https://console.aws.amazon.com/iam/. Pour cela :

    1. Ouvrez la machine à états que vous avez créée à l'étape 1 dans le compte source.

    2. Sur la page détaillée de State machine, choisissez IAMrole ARN.

  2. Dans l'onglet Autorisations, choisissez Ajouter des autorisations, puis choisissez Créer une politique intégrée.

  3. Choisissez l'JSONonglet et remplacez le contenu existant par l'autorisation suivante. Assurez-vous de remplacer votre fonction Lambda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. Choisissez Review policy (Examiner une politique).

  5. Sur la page Révision de la politique, entrez le nom de l'autorisation, puis choisissez Créer une politique.