

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.

# Accès aux AWS ressources multi-comptes dans Step Functions
<a name="tutorial-access-cross-acct-resources"></a>

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 rôle IAM cible.

Pour commencer, dans la définition de votre `Task` État, vous spécifiez le rôle IAM cible que la machine d'État doit assumer avant d'appeler la fonction Lambda entre comptes. Modifiez ensuite la politique de confiance dans le rôle IAM 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 rôle IAM 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 rôle IAM afin d'accéder à des ressources à partir de plusieurs Comptes AWS. Cependant, une machine d'état ne peut assumer qu'un seul rôle IAM à la fois en fonction de la définition de `Task` l'état.

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

## Conditions préalables
<a name="tutorial-access-cross-acct-resources-prereq"></a>
+ 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**  
Les politiques IAM basées sur les ressources et les rôles ne délèguent l'accès entre les comptes qu'au sein d'une seule 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 fournirez cet ARN dans la définition d'`Task`état de votre machine à états. Voici un exemple d'ARN de fonction Lambda :

  ```
  arn:aws:lambda:us-east-2:{{account-id}}:function:{{functionName}}
  ```
+ Assurez-vous d'avoir créé le rôle IAM 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
<a name="tutorial-access-cross-acct-resources-update-task-def"></a>

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 entre comptes appelée. `Echo` Vous pouvez appeler n'importe quelle AWS ressource en suivant ces étapes.

1. Ouvrez la [console Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) et choisissez **Create state machine**.

1. 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.

1. Pour ouvrir Workflow Studio, choisissez **Next**.

1. 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`

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

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

   1. Pour **Nom de la fonction**, choisissez **Enter function name**, puis entrez l'ARN de la fonction Lambda dans le champ. Par exemple, `arn:aws:lambda:us-east-2:111122223333:function:{{Echo}}`.

   1. Pour **Fournir l'ARN du rôle IAM, spécifiez l'ARN** du rôle IAM cible. Par exemple, `arn:aws:iam::111122223333:role/LambdaRole`.
**Astuce**  
Vous pouvez également spécifier un [chemin de référence vers](amazon-states-language-paths.md#amazon-states-language-reference-paths) une paire clé-valeur existante dans l'entrée JSON de l'État qui contient l'ARN du rôle IAM. 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, consultez[Spécifier JSONPath comme ARN du rôle IAM](state-task.md#example-credentials-specify-dynamic-jsonpath).

1. Choisissez **Suivant**.

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

1. 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.

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

1. Notez l'ARN du rôle IAM de la machine à états et l'ARN de la machine à états 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
<a name="tutorial-access-cross-acct-resources-update-target-trust-policy"></a>

Le rôle IAM 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 rôle IAM cible.

Après avoir créé la relation de confiance, un utilisateur du compte source peut utiliser l'opération d'[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API 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 console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Choisissez l’onglet **Relations de confiance**.

1. Choisissez **Modifier la politique de confiance** et collez la politique de confiance suivante. Assurez-vous de remplacer le Compte AWS numéro et l'ARN du rôle IAM. Le `sts:ExternalId` champ contrôle également qui peut assumer le rôle. Le nom de la machine à états ne doit inclure que des caractères pris en charge par l' AWS Security Token Service `AssumeRole`API. Pour plus d’informations, consultez [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) dans la *Référence d’API AWS Security Token Service *.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "sts:AssumeRole",
         "Principal": {
           "AWS": "arn:aws:iam::{{account-id}}: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:{{region}}:{{account-id}}:stateMachine:testCrossAccount"   //// ARN of the state machine that will assume the role.
           }
         }
       }
     ]
   }
   ```

1. 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
<a name="tutorial-access-cross-acct-resources-add-permissions"></a>

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

1. Sélectionnez l’onglet **Autorisations**.

1. Sélectionnez **Ajouter des autorisations**, puis **Ajouter la politique**.

1. Choisissez l'onglet **JSON** et remplacez le contenu existant par l'autorisation suivante. Assurez-vous de remplacer l'ARN de votre fonction Lambda.

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

1. Choisissez **Examiner une politique**.

1. Sur la page **Réviser 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
<a name="tutorial-access-cross-acct-resources-update-exec-role"></a>

Step Functions ne génère pas automatiquement la [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)politique 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 d'état pour lui permettre d'assumer un rôle IAM cible dans un ou plusieurs Comptes AWS rôles.

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

   1. Ouvrez la machine à états que vous avez créée à [l'étape 1 dans le compte source](#tutorial-access-cross-acct-resources-update-task-def).

   1. Sur la page **détaillée de la machine State**, choisissez l'**ARN du rôle IAM**.

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

1. Choisissez l'onglet **JSON** et remplacez le contenu existant par l'autorisation suivante. Assurez-vous de remplacer l'ARN de votre fonction Lambda.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "sts:AssumeRole",
         "Resource": "arn:aws:iam::111122223333:role/{{LambdaRole}}"  // The target role to be assumed
       }
     ]
   }
   ```

1. Choisissez **Examiner une politique**.

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