Comment Step Functions génère IAM des politiques pour les services intégrés - 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.

Comment Step Functions génère IAM des politiques pour les services intégrés

Lorsque vous créez une machine à états dans AWS Step Functions console, Step Functions produit une AWS Identity and Access Management (IAM) politique basée sur les ressources utilisées dans la définition de votre machine à états, comme suit :

  • Si votre machine d'état utilise l'une des intégrations optimisées, Step Functions créera une politique avec les autorisations et les rôles nécessaires pour votre machine d'état. (Exception : MediaConvert l'intégration nécessite que vous définissiez manuellement les autorisations — voirIAMpolitiques relatives aux appels AWS Elemental MediaConvert.)

  • Si votre machine à états utilise l'un des AWS SDKintégrations, un IAM rôle avec des autorisations partielles sera créé. Ensuite, vous pouvez utiliser la IAM console pour ajouter les politiques de rôle manquantes.

Les exemples suivants montrent comment Step Functions génère une IAM politique basée sur la définition de votre machine à états. Les éléments de l'exemple de code tels que [[resourceName]] sont remplacées par les ressources statiques répertoriées dans la définition de votre machine à états. Si vous disposez de plusieurs ressources statiques, il y aura une entrée pour chacune d'elles dans le IAM rôle.

Ressources dynamiques ou statiques

Les ressources statiques sont définies directement dans l'état de tâche de votre machine d'état. Lorsque vous incluez les informations relatives aux ressources que vous souhaitez appeler directement dans l'état de vos tâches, Step Functions crée un IAM rôle uniquement pour ces ressources.

Les ressources dynamiques sont celles qui sont transmises à votre état d'entrée et accessibles à l'aide d'un chemin (voir Utilisation de chemins pour accéder aux entrées pour les flux de travail Step Functions). Si vous transmettez des ressources dynamiques à votre tâche, Step Functions créera une politique plus privilégiée qui spécifie :"Resource": "*".

Autorisations supplémentaires pour les tâches utilisant le modèle Run a Job

Pour les tâches qui utilisent le modèle Run a Job (celles qui se terminent par.sync), des autorisations supplémentaires sont nécessaires pour surveiller les API actions des services connectés et recevoir une réponse à la suite de celles-ci. Les politiques associées incluent davantage d'autorisations que pour les tâches qui utilisent les modèles Request Response ou Wait for Callback. Consultez Découvrez les modèles d'intégration des services dans Step Functions pour plus d'informations sur les tâches synchrones.

Note

Vous devez fournir des autorisations supplémentaires pour les intégrations de services qui prennent en charge le modèle Run a Job (.sync).

Step Functions utilise deux méthodes pour surveiller l'état d'une tâche lorsqu'elle est exécutée sur un service connecté : les sondages et les événements.

Le sondage nécessite une autorisation Describe ou Get API des actions, telles que ecs:DescribeTasks ouglue:GetJobRun. Si ces autorisations sont absentes de votre rôle, Step Functions ne sera peut-être pas en mesure de déterminer le statut de votre tâche. Cela est dû au fait que certaines intégrations du service Run a Job (.sync) ne prennent pas en charge les EventBridge événements, et certains services n'envoient des événements que dans la mesure du possible.

Événements envoyés depuis AWS les services fournis à Amazon EventBridge sont dirigés vers Step Functions à l'aide d'une règle gérée et nécessitent des autorisations pour events:PutTargetsevents:PutRule, etevents:DescribeRule. Si ces autorisations ne sont pas associées à votre rôle, Step Functions ne sera peut-être pas informée de la fin de votre tâche pendant un certain temps. Pour plus d'informations sur les EventBridge événements, consultez la section Événements de AWS services.

Note

Pour les tâches Run a Job (.sync) qui prennent en charge à la fois les sondages et les événements, votre tâche peut toujours s'exécuter correctement à l'aide d'événements. Cela peut se produire même si votre rôle ne dispose pas des autorisations requises pour le sondage. Dans ce cas, il se peut que vous ne remarquiez pas immédiatement que les autorisations de vote sont incorrectes ou manquantes. Dans les rares cas où l'événement ne parvient pas à être transmis ou traité par Step Functions, votre exécution peut être bloquée. Pour vérifier que vos autorisations d'interrogation sont correctement configurées, vous pouvez exécuter une exécution dans un environnement sans EventBridge événements de la manière suivante :

  • Supprimez la règle gérée de EventBridge, qui est chargée de transférer les événements vers Step Functions. Cette règle gérée est partagée par toutes les machines d'état de votre compte. Vous devez donc effectuer cette action uniquement dans un compte de test ou de développement afin d'éviter tout impact involontaire sur les autres machines d'état. Vous pouvez identifier la règle gérée spécifique à supprimer en inspectant le Resource champ utilisé events:PutRule dans le modèle de politique du service cible. La règle gérée sera recréée la prochaine fois que vous créerez ou mettrez à jour une machine à états utilisant cette intégration de services. Pour plus d'informations sur la suppression de EventBridge règles, consultez la section Désactivation ou suppression d'une règle.

  • Effectuez le test avec Step Functions Local, qui ne prend pas en charge l'utilisation d'événements pour effectuer des tâches Run a Job (.sync). Pour utiliser Step Functions Local, assumez le IAM rôle utilisé par votre machine à états. Vous devrez peut-être modifier la relation de confiance. Définissez les variablesAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY, et d'AWS_SESSION_TOKENenvironnement sur les valeurs du rôle assumé, puis lancez Step Functions Local à l'aide dejava -jar StepFunctionsLocal.jar. Enfin, utilisez AWS CLI avec le --endpoint-url paramètre permettant de créer une machine à états, de démarrer une exécution et d'obtenir l'historique des exécutions. Pour de plus amples informations, veuillez consulter Tester les machines d'état localement dans Step Functions.

Si une tâche utilisant le modèle Run a Job (.sync) est arrêtée, Step Functions fera de son mieux pour annuler la tâche. Cela nécessite l'autorisation de CancelStop,Terminate, ou Delete API des actions, telles que batch:TerminateJob oueks:DeleteCluster. Si ces autorisations ne sont pas associées à votre rôle, Step Functions ne sera pas en mesure d'annuler votre tâche et vous risquez de devoir payer des frais supplémentaires pendant son exécution. Pour plus d'informations sur l'arrêt des tâches, consultez Run a Job.