Criar uma máquina de estado do Step Functions usando AWS SAM - 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á.

Criar uma máquina de estado do Step Functions usando AWS SAM

Neste guia, você faz download, compila e implanta um aplicativo de exemplo do AWS SAM que contém uma máquina de estado do AWS Step Functions. Este aplicativo cria um fluxo de trabalho de negociação de ações simulado que é executado em uma programação predefinida (observe que a programação está desabilitada por padrão para evitar cobranças).

O diagrama a seguir mostra os componentes deste aplicativo:

Diagrama mostrando o fluxo de trabalho deste tutorial.

Veja a seguir uma visualização dos comandos executados para criar o aplicativo de exemplo. Para obter mais detalhes sobre cada um desses comandos, consulte as seções posteriores nesta página

# Step 1 - Download a sample application. For this tutorial you # will follow the prompts to select an AWS Quick Start Template # called 'Multi-step workflow' sam init # Step 2 - Build your application cd project-directory sam build # Step 3 - Deploy your application sam deploy --guided

Pré-requisitos

Neste guia, é pressuposto que você concluiu as etapas da seção Instalar a CLI do AWS SAM no sistema operacional. Pressupõem-se que você fez o seguinte:

  1. Crie uma conta da AWS.

  2. Permissões do IAM configuradas.

  3. Instalou o Homebrew. Observação: o Homebrew é apenas um pré-requisito para o Linux e o macOS.

  4. Instalou a CLI do AWS SAM. Observação: verifique se você tem a versão 0.52.0 ou posterior. É possível verificar a versão executando o comando sam --version.

Etapa 1: Fazer download de um aplicativo de exemplo do AWS SAM

Comando a ser executado:

sam init

Siga as instruções na tela para selecionar o seguinte:

  1. Modelo: modelos de Início rápido do AWS

  2. Linguagem: Python, Ruby, NodeJS, Go, Java ou .NET

  3. Nome do projeto: (nome de sua escolha, o padrão é sam-app)

  4. Aplicação de início rápido: fluxo de trabalho em várias etapas

O que AWS SAM está fazendo:

Este comando cria um diretório com o nome fornecido para o prompt "Nome do projeto" (o padrão é sam-app). O conteúdo específico do diretório dependerá da linguagem que você escolher.

Veja a seguir o conteúdo do diretório ao escolher um dos tempos de execução do Python:

├── README.md
├── functions
│   ├── __init__.py
│   ├── stock_buyer
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   ├── stock_checker
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── stock_seller
│       ├── __init__.py
│       ├── app.py
│       └── requirements.txt
├── statemachine
│   └── stock_trader.asl.json
├── template.yaml
└── tests
    └── unit
        ├── __init__.py
        ├── test_buyer.py
        ├── test_checker.py
        └── test_seller.py

Existem dois arquivos especialmente interessantes que você pode conferir:

É possível ver a seguinte entrada no arquivo template.yaml, que aponta para o arquivo de definição da máquina de estado:

Properties: DefinitionUri: statemachine/stock_trader.asl.json

Pode ser útil manter a definição da máquina de estado como um arquivo separado, em vez de incorporá-la ao modelo AWS SAM. Por exemplo, rastrear alterações na definição da máquina de estado será mais fácil se você não incluir a definição no modelo. Você pode usar o Workflow Studio para criar e manter a definição da máquina de estado e exportar a definição do console diretamente para o arquivo de especificação da Amazon States Language sem mesclá-la ao modelo.

Para obter mais informações sobre o aplicativo de exemplo, consulte o arquivo README.md no diretório do projeto.

Etapa 2: Criar o aplicativo

Comando a ser executado:

Primeiro, mude para o diretório do projeto (ou seja, o diretório onde o arquivo template.yaml do aplicativo de exemplo está localizado; por padrão é sam-app) e execute este comando:

sam build

Exemplos de resultado:

  
 Build Succeeded

 Built Artifacts  : .aws-sam/build
 Built Template   : .aws-sam/build/template.yaml

 Commands you can use next
 =========================
 [*] Invoke Function: sam local invoke
 [*] Deploy: sam deploy --guided
       

O que AWS SAM está fazendo:

A CLI do AWS SAM vem com abstrações para vários runtimes do Lambda para criar as dependências e copia todos os artefatos de compilação em pastas de preparação para que tudo esteja pronto para ser empacotado e implantado. O comando sam build compila quaisquer dependências que o aplicativo tem e copia os artefatos de compilação para pastas em .aws-sam/build.

Etapa 3: Implantar o aplicativo na Nuvem AWS

Comando a ser executado:

sam deploy --guided

Siga as instruções na tela. Só é possível responder com Enter para aceitar as opções padrão fornecidas na experiência interativa.

O que AWS SAM está fazendo:

Este comando implanta o aplicativo na Nuvem AWS. Ele usa os artefatos de implantação criados com o comando sam build, empacota-os e faz upload deles para um bucket do Amazon S3 criado pela CLI do AWS SAM e implanta o aplicativo usando o AWS CloudFormation. Na saída do comando de implantação, é possível ver as alterações que estão sendo feitas na pilha do AWS CloudFormation.

É possível verificar se a máquina de estado de exemplo do Step Functions foi implantada com êxito seguindo estas etapas:

  1. Entre no AWS Management Console e abra o console do Step Functions em https://console.aws.amazon.com/states/.

  2. Na navegação à esquerda, escolha Máquinas de estado.

  3. Encontre e escolha a nova máquina de estado na lista. Ela será StockTradingStateMachine-<unique-hash>.

  4. Escolha a guia Definição.

Agora é necessário ver uma representação visual da máquina de estado. É possível verificar se a representação visual corresponde à definição da máquina de estado encontrada no arquivo statemachine/stockTrader.asl.json do diretório do projeto.

Solução de problemas

Erro da CLI do SAM: "no such option: --guided" (não existe essa opção: --guided)

Ao executar sam deploy, você verá o seguinte erro:

 
Error: no such option: --guided
            

Isso significa que você está usando uma versão mais antiga da CLI do AWS SAM que não é compatível com o parâmetro --guided. Para corrigir isso, é possível atualizar a versão da CLI do AWS SAM para 0.33.0 ou posterior ou omitir o parâmetro --guided do comando sam deploy.

Erro da CLI do SAM: "Failed to create managed resources: Unable to locate credentials" (Falha ao criar recursos gerenciados: não é possível localizar credenciais)

Ao executar sam deploy, você verá o seguinte erro:

 
Error: Failed to create managed resources: Unable to locate credentials
            

Isso significa que você não configurou credenciais da AWS para permitir que a CLI do AWS SAM faça chamadas de serviço da AWS. Para corrigir isso, é necessário configurar credenciais da AWS. Para obter mais informações, consulte Configurar credenciais do AWS no Guia do desenvolvedor do AWS Serverless Application Model.

Limpar

Se você não precisar mais dos recursos da AWS criados durante a execução deste tutorial, poderá removê-los excluindo a pilha do AWS CloudFormation que você implantou.

Para excluir a pilha do AWS CloudFormation criada com este tutorial usando o AWS Management Console, siga estas etapas:

  1. Faça login no AWS Management Console e abra o console AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. No painel de navegação à esquerda, selecionePilhas.

  3. Na lista de pilhas, escolha sam-app (ou o nome da pilha criada).

  4. Escolha Excluir.

Quando concluído, o status da pilha será alterado para DELETE_COMPLETE.

Como alternativa, é possível excluir a pilha do AWS CloudFormation executando o seguinte comando da AWS CLI:

aws cloudformation delete-stack --stack-name sam-app --region region

Verificar pilha excluída

Para os dois métodos de exclusão da pilha do AWS CloudFormation, é possível verificar se ela foi excluída acessando https://console.aws.amazon.com/cloudformation, escolhendo Pilhas no painel de navegação esquerdo e escolhendo Excluído no menu suspenso à direita da caixa de texto de pesquisa. Você verá o nome da pilha sam-app (ou o nome da pilha criada) na lista de pilhas excluídas.