Politiques IAM 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.

Politiques IAM pour les services intégrés

Lorsque vous créez une machine à états dans la AWS Step Functions console, Step Functions produit une politique AWS Identity and Access Management (IAM) 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 — voirPolitiques IAM pour AWS Elemental MediaConvert.)

  • Si votre machine d'état utilise l'une des intégrations du AWS SDK, un rôle IAM avec des autorisations partielles sera créé. Vous pouvez ensuite utiliser la console IAM pour ajouter les politiques de rôle manquantes.

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

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 rôle IAM 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 Chemins). 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 se terminant par.sync), des autorisations supplémentaires sont nécessaires pour surveiller et recevoir une réponse des actions d'API des services connectés. 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 Modèles d'intégration des services 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 des actions d'GetAPI, 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.

Les événements envoyés par les AWS services à 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 liés AWS aux 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, vous ne remarquerez peut-être 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 rôle IAM utilisé par votre machine d'état. 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 le --endpoint-url paramètre AWS CLI with pour créer une machine à états, démarrer une exécution et obtenir l'historique des exécutions. Pour plus d’informations, consultez Tester les machines d'état localement.

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 une autorisation pourCancel, StopTerminate, ou des actions Delete d'API, 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.

Modèles de politiques utilisés pour créer des rôles IAM

Les rubriques suivantes incluent les modèles de politique utilisés lorsque vous choisissez de demander à Step Functions de créer un nouveau rôle pour vous.

Note

Consultez ces modèles pour comprendre comment Step Functions crée vos politiques IAM, et pour illustrer comment créer manuellement des politiques IAM pour Step Functions lorsque vous travaillez avec d'autres AWS services. Pour plus d'informations sur les intégrations de services Step Functions, consultezUtilisation AWS Step Functions avec d'autres services.