Utiliser Terraform pour déployer des machines d'état 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.

Utiliser Terraform pour déployer des machines d'état dans Step Functions

Terraform by HashiCorp est un framework permettant de créer des applications utilisant l'infrastructure en tant que code (IaC). Avec Terraform, vous pouvez créer des machines d'état et utiliser des fonctionnalités, telles que la prévisualisation des déploiements d'infrastructure et la création de modèles réutilisables. Les modèles Terraform vous aident à maintenir et à réutiliser le code en le décomposant en petits morceaux.

Si vous connaissez Terraform, vous pouvez suivre le cycle de développement décrit dans cette rubrique en tant que modèle pour créer et déployer vos machines d'état dans Terraform. Si vous n'êtes pas familier avec Terraform, nous vous recommandons de suivre d'abord l'atelier Introduction à Terraform AWS pour vous familiariser avec Terraform.

Astuce

Pour déployer un exemple de machine à états créée à l'aide de Terraform sur votre ordinateur Compte AWS, consultez le module Gestion des machines à états avec infrastructure en tant que code de The AWS Step Functions Workshop.

Prérequis

Avant de commencer, assurez-vous de remplir les conditions préalables suivantes :

  • Installez Terraform sur votre machine. Pour plus d'informations sur l'installation de Terraform, voir Installer Terraform.

  • Installez Step Functions Local sur votre machine. Nous vous recommandons d'installer l'image Docker Step Functions Local pour utiliser Step Functions Local. Pour de plus amples informations, veuillez consulter Tester les machines d'état localement dans Step Functions.

  • Installez AWS SAM CLI. Pour plus d'informations sur l'installation, reportez-vous AWS SAM CLI à la section Installation du manuel du AWS Serverless Application Model développeur.

  • Installez le AWS Toolkit for Visual Studio Code pour afficher le diagramme de flux de travail de vos machines d'état. Pour plus d'informations sur l'installation, reportez-vous AWS Toolkit for Visual Studio Codeà la section Installation du dans le guide de AWS Toolkit for Visual Studio Code l'utilisateur.

Cycle de vie du développement des machines State avec Terraform

La procédure suivante explique comment utiliser un prototype de machine à états que vous créez à l'aide de Workflow Studio dans la console Step Functions comme point de départ pour le développement local avec Terraform et le. AWS Toolkit for Visual Studio Code

Pour consulter l'exemple complet qui traite du développement de machines à états avec Terraform et présente les meilleures pratiques en détail, voir Meilleures pratiques pour l'écriture de projets Step Functions Terraform.

Pour démarrer le cycle de développement d'une machine à états avec Terraform
  1. Démarrez un nouveau projet Terraform avec la commande suivante.

    terraform init
  2. Ouvrez la console Step Functions pour créer un prototype pour votre machine à états.

  3. Dans Workflow Studio, procédez comme suit :

    1. Créez votre prototype de flux de travail.

    2. Exportez la définition Amazon States Language (ASL) de votre flux de travail. Pour ce faire, choisissez la liste déroulante Import/Export, puis sélectionnez Exporter la définition. JSON

  4. Enregistrez la ASL définition exportée dans le répertoire de votre projet.

    Vous transmettez la ASL définition exportée en tant que paramètre d'entrée à la ressource aws_sfn_state_machineTerraform qui utilise la templatefilefonction. Cette fonction est utilisée dans le champ de définition qui transmet la ASL définition exportée et toutes les substitutions de variables.

    Astuce

    Étant donné que le fichier de ASL définition peut contenir de longs blocs de texte, nous vous recommandons d'éviter la EOF méthode en ligne. Cela facilite la substitution de paramètres dans la définition de votre machine à états.

  5. (Facultatif) Mettez à jour la ASL définition dans votre fichier IDE et visualisez vos modifications à l'aide du AWS Toolkit for Visual Studio Code.

    Capture d'écran de la ASL définition d'un flux de travail dans Visual Studio Code et de sa représentation visuelle.

    Pour éviter d'exporter continuellement votre définition et de la refactoriser dans votre projet, nous vous recommandons d'effectuer les mises à jour localement IDE et de suivre ces mises à jour avec Git.

  6. Testez votre flux de travail à l'aide de Step Functions Local.

  7. Prévisualisez votre machine d'état et d'autres AWS ressources avant de déployer la machine d'état. Pour ce faire, exécutez la commande suivante.

    terraform plan
  8. Déployez votre machine d'état depuis votre environnement local ou via des pipelines CI/CD à l'aide de la commande suivante.

    terraform apply
  9. (Facultatif) Nettoyez vos ressources et supprimez la machine d'état à l'aide de la commande suivante.

    terraform destroy

IAMrôles et politiques pour votre machine étatique

Utilisez les politiques d'intégration du service Terraform pour ajouter les IAM autorisations nécessaires à votre machine d'état, par exemple l'autorisation d'invoquer des fonctions Lambda. Vous pouvez également définir des rôles et des politiques explicites et les associer à votre machine d'état.

L'exemple IAM de politique suivant accorde à votre machine d'état l'accès pour appeler une fonction Lambda nommée. myFunction

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myFunction" } ] }

Nous vous recommandons également d'utiliser la source de aws_iam_policy_documentdonnées lors de la définition IAM des politiques pour vos machines d'état dans Terraform. Cela vous permet de vérifier si votre politique est mal formée et de remplacer les ressources par des variables.

L'exemple IAM de politique suivant utilise la source de aws_iam_policy_document données et accorde à votre machine d'état l'accès pour appeler une fonction Lambda nommée. myFunction

data "aws_iam_policy_document" "state_machine_role_policy" { statement { effect = "Allow" actions = [ "lambda:InvokeFunction" ] resources = ["${aws_lambda_function.[[myFunction]].arn}:*"] } }
Astuce

Pour voir des modèles AWS architecturaux plus avancés déployés avec Terraform, consultez les exemples de Terraform dans la collection Serverless Land Workflows.