Utilizzo di Terraform per distribuire macchine a stati in Step Functions - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Terraform per distribuire macchine a stati in Step Functions

Terraform by HashiCorp è un framework per la creazione di applicazioni che utilizzano l'infrastruttura come codice (IaC). Con Terraform, puoi creare macchine a stati e utilizzare funzionalità, come l'anteprima delle implementazioni dell'infrastruttura e la creazione di modelli riutilizzabili. I modelli Terraform ti aiutano a mantenere e riutilizzare il codice suddividendolo in blocchi più piccoli.

Se conosci Terraform, puoi seguire il ciclo di vita di sviluppo descritto in questo argomento come modello per la creazione e la distribuzione delle tue macchine a stati in Terraform. Se non hai familiarità con Terraform, ti consigliamo di completare prima il workshop Introduzione a Terraform per familiarizzare con Terraform. AWS

Suggerimento

Per distribuire un esempio di macchina a stati creata utilizzando Terraform sul tuo computer Account AWS, consulta il modulo Gestire macchine a stati con infrastruttura come codice di The Workshop. AWS Step Functions

Prerequisiti

Prima di iniziare, assicurati di completare i seguenti prerequisiti:

  • Installa Terraform sul tuo computer. Per informazioni sull'installazione di Terraform, consulta Installa Terraform.

  • Installa Step Functions Local sul tuo computer. Ti consigliamo di installare l'immagine Docker di Step Functions Local per utilizzare Step Functions Local. Per ulteriori informazioni, consulta Test di macchine a stati localmente in Step Functions.

  • Installa AWS SAM CLI. Per informazioni sull'installazione, consulta Installazione di AWS SAM CLI nella Guida per AWS Serverless Application Model gli sviluppatori.

  • Installa il AWS Toolkit for Visual Studio Code per visualizzare il diagramma del flusso di lavoro delle tue macchine a stati. Per informazioni sull'installazione, vedere Installazione di AWS Toolkit for Visual Studio Code nella Guida per l'AWS Toolkit for Visual Studio Code utente.

Ciclo di vita di sviluppo di macchine a stati con Terraform

La procedura seguente spiega come utilizzare un prototipo di macchina a stati creato utilizzando Workflow Studio nella console Step Functions come punto di partenza per lo sviluppo locale con Terraform e il. AWS Toolkit for Visual Studio Code

Per visualizzare l'esempio completo che illustra lo sviluppo di macchine a stati con Terraform e presenta le migliori pratiche in dettaglio, vedere Best practices for writing Step Functions Terraform projects.

Per avviare il ciclo di vita di sviluppo di una macchina a stati con Terraform
  1. Avvia un nuovo progetto Terraform con il seguente comando.

    terraform init
  2. Apri la console Step Functions per creare un prototipo per la tua macchina a stati.

  3. In Workflow Studio, effettuate le seguenti operazioni:

    1. Crea il prototipo del tuo flusso di lavoro.

    2. Esporta la definizione Amazon States Language (ASL) del tuo flusso di lavoro. A tale scopo, scegli l'elenco a discesa Importa/Esporta, quindi seleziona Esporta definizione. JSON

  4. Salva la ASL definizione esportata nella directory del progetto.

    Si passa la ASL definizione esportata come parametro di input alla risorsa aws_sfn_state_machineTerraform che utilizza la funzione. templatefile Questa funzione viene utilizzata all'interno del campo di definizione che passa la definizione esportata e le eventuali ASL sostituzioni di variabili.

    Suggerimento

    Poiché il file di ASL definizione può contenere lunghi blocchi di testo, si consiglia di evitare il metodo inline. EOF Ciò semplifica la sostituzione dei parametri nella definizione della macchina a stati.

  5. (Facoltativo) Aggiorna la ASL definizione all'interno del tuo IDE e visualizza le modifiche utilizzando il. AWS Toolkit for Visual Studio Code

    Schermata della ASL definizione di un flusso di lavoro in Visual Studio Code e della sua rappresentazione visiva.

    Per evitare di esportare continuamente la definizione e rifattorizzarla nel progetto, ti consigliamo di apportare aggiornamenti localmente IDE e di tenere traccia di questi aggiornamenti con Git.

  6. Testa il tuo flusso di lavoro utilizzando Step Functions Local.

  7. Visualizza in anteprima la tua macchina a stati e altre AWS risorse prima di distribuire la macchina a stati. Per farlo, esegui il comando seguente.

    terraform plan
  8. Distribuisci la tua macchina a stati dall'ambiente locale o tramite pipeline CI/CD utilizzando il seguente comando.

    terraform apply
  9. (Facoltativo) Pulisci le tue risorse ed elimina la macchina a stati utilizzando il seguente comando.

    terraform destroy

IAMruoli e politiche per la tua macchina a stati

Utilizza le politiche di integrazione del servizio Terraform per aggiungere le IAM autorizzazioni necessarie alla tua macchina a stati, ad esempio l'autorizzazione a richiamare le funzioni Lambda. Puoi anche definire ruoli e politiche espliciti e associarli alla tua macchina a stati.

Il seguente esempio di IAM policy concede alla macchina a stati l'accesso per richiamare una funzione Lambda denominata. myFunction

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

Ti consigliamo inoltre di utilizzare l'origine aws_iam_policy_documentdati quando definisci IAM le politiche per le tue macchine a stati in Terraform. Questo ti aiuta a verificare se la tua politica non è valida e a sostituire le risorse con variabili.

Il seguente esempio di IAM policy utilizza l'origine aws_iam_policy_document dati e concede alla macchina a stati l'accesso per richiamare una funzione Lambda denominata. myFunction

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

Per visualizzare modelli AWS architettonici più avanzati implementati con Terraform, consulta gli esempi di Terraform su Serverless Land Workflows Collection.