Usando o Terraform para implantar máquinas de estado em Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando o Terraform para implantar máquinas de estado em Step Functions

O Terraform by HashiCorp é uma estrutura para criar aplicativos usando infraestrutura como código (IaC). Com o Terraform, você pode criar máquinas de estado e usar recursos, como visualizar implantações de infraestrutura e criar modelos reutilizáveis. Os modelos do Terraform ajudam você a manter e reutilizar o código dividindo-o em partes menores.

Se você estiver familiarizado com o Terraform, poderá seguir o ciclo de vida de desenvolvimento descrito neste tópico como um modelo para criar e implantar suas máquinas de estado no Terraform. Se não estiver familiarizado com o Terraform, recomendamos que primeiro conclua o workshop Introdução ao Terraform em AWS para se familiarizar com o Terraform.

dica

Para implantar um exemplo de uma máquina de estado construída usando o Terraform em sua Conta da AWS, consulte o módulo Gerenciando máquinas de estado com infraestrutura como código do The AWS Step Functions Workshop.

Pré-requisitos

Antes de começar, conclua os seguintes pré-requisitos:

  • Instale o Terraform na máquina. Para obter informações sobre a instalação do Terraform, consulte Instalar o Terraform.

  • Instale o Step Functions Local em sua máquina. Recomendamos que você instale a imagem do Docker do Step Functions Local para poder usar o Step Functions Local. Para obter mais informações, consulte Testando máquinas de estado localmente em Step Functions.

  • Instalar AWS SAM CLI. Para obter informações sobre a instalação, consulte Instalando o AWS SAM CLI no Guia do AWS Serverless Application Model desenvolvedor.

  • Instale o AWS Toolkit for Visual Studio Code para visualizar o diagrama do fluxo de trabalho de suas máquinas de estado. Para informações sobre instalação, consulte Instalação do AWS Toolkit for Visual Studio Code no Guia do usuário da AWS Toolkit for Visual Studio Code .

Ciclo de vida de desenvolvimento de máquinas de estado com o Terraform

O procedimento a seguir explica como você pode usar um protótipo de máquina de estado criado usando o Workflow Studio no console Step Functions como ponto de partida para o desenvolvimento local com o Terraform e o AWS Toolkit for Visual Studio Code.

Para ver o exemplo completo que discute o desenvolvimento da máquina de estado com o Terraform e apresenta as melhores práticas em detalhes, consulte Melhores práticas para criar projetos Terraform do Step Functions.

Para iniciar o ciclo de vida de desenvolvimento de uma máquina de estado com o Terraform
  1. Faça bootstrap de um novo projeto do Terraform com o seguinte comando.

    terraform init
  2. Abra o console Step Functions para criar um protótipo para sua máquina de estado.

  3. No Workflow Studio, faça o seguinte:

    1. Crie seu protótipo de fluxo de trabalho.

    2. Exporte a definição do Amazon States Language (ASL) do seu fluxo de trabalho. Para fazer isso, escolha a lista suspensa Importar/Exportar e selecione Exportar definição. JSON

  4. Salve a ASL definição exportada no diretório do seu projeto.

    Você passa a ASL definição exportada como um parâmetro de entrada para o recurso do aws_sfn_state_machineTerraform que usa a templatefilefunção. Essa função é usada dentro do campo de definição que passa a ASL definição exportada e quaisquer substituições de variáveis.

    dica

    Como o arquivo de ASL definição pode conter blocos de texto longos, recomendamos que você evite o método embutidoEOF. Isso facilita a substituição de parâmetros na definição da máquina de estado.

  5. (Opcional) Atualize a ASL definição em sua IDE e visualize suas alterações usando o. AWS Toolkit for Visual Studio Code

    Captura de tela da ASL definição de um fluxo de trabalho no Visual Studio Code e sua representação visual.

    Para evitar exportar continuamente sua definição e refatorá-la em seu projeto, recomendamos que você faça atualizações localmente em você IDE e acompanhe essas atualizações com o Git.

  6. Teste seu fluxo de trabalho usando o Step Functions Local.

  7. Visualize sua máquina de estado e outros AWS recursos antes de implantá-la. Para fazer isso, execute o comando a seguir.

    terraform plan
  8. Implante sua máquina de estado a partir do seu ambiente local ou por meio de pipelines de CI/CD usando o comando a seguir.

    terraform apply
  9. (Opcional) Limpe seus recursos e exclua a máquina de estado usando o comando a seguir.

    terraform destroy

IAMfunções e políticas para sua máquina estadual

Use as políticas de integração de serviços do Terraform para adicionar IAM as permissões necessárias à sua máquina de estado, por exemplo, permissão para invocar funções Lambda. Você também pode definir perfis e políticas explícitas e associá-las à sua máquina de estado.

O exemplo IAM de política a seguir concede à sua máquina de estado acesso para invocar uma função Lambda chamada. myFunction

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

Também recomendamos usar a fonte de aws_iam_policy_documentdados ao definir IAM políticas para suas máquinas de estado no Terraform. Isso ajuda a verificar se sua política está malformada e a substituir quaisquer recursos por variáveis.

O exemplo IAM de política a seguir usa a fonte de aws_iam_policy_document dados e concede acesso à sua máquina de estado para invocar uma função Lambda chamada. myFunction

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

Para ver padrões AWS arquitetônicos mais avançados implantados com o Terraform, consulte exemplos do Terraform na Serverless Land Workflows Collection.