

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á.

# Crie uma máquina de estado Step Functions usando AWS SAM
<a name="tutorial-state-machine-using-sam"></a>

Neste guia, você baixa, cria e implanta um AWS SAM aplicativo de amostra que contém uma máquina de AWS Step Functions estado. 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.\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/images/sam-starter-template-docs.png)


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
<a name="tutorial-state-machine-using-sam-prerequisites"></a>

Este guia pressupõe que você tenha concluído as etapas na [Instalação da AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) para seu sistema operacional. Pressupõem-se que você fez o seguinte:

1. Criou uma AWS conta.

1. Permissões do IAM configuradas.

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

1. Instalou a AWS SAM CLI. 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: baixar um AWS SAM aplicativo de amostra
<a name="tutorial-state-machine-using-sam-initialize"></a>

**Comando a ser executado:**

```
sam init
```

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

1. **Modelo:** Modelos de início AWS rápido

1. **Linguagem:** Python, Ruby, NodeJS, Go, Java ou .NET

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

1. **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:
+ `template.yaml`: contém o AWS SAM modelo que define os AWS recursos do seu aplicativo.
+ `statemachine/stockTrader.asl.json`: contém a definição de máquina de estado do aplicativo, escrita em [Usar a Amazon States Language para definir fluxos de trabalho do Step Functions](concepts-amazon-states-language.md).

É 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 AWS SAM modelo. 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
<a name="tutorial-state-machine-using-sam-build"></a>

**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 AWS SAM CLI vem com abstrações para vários tempos de execução do Lambda para criar suas dependências e copia todos os artefatos de construção em pastas de teste 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 seu aplicativo na AWS nuvem
<a name="tutorial-state-machine-using-sam-deploy"></a>

**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:**

Esse comando implanta seu aplicativo na AWS nuvem. Ele pega os artefatos de implantação que você cria com o `sam build` comando, os empacota e os carrega em um bucket do Amazon S3 criado pela AWS SAM CLI e implanta o aplicativo usando. CloudFormation Na saída do comando de implantação, é possível ver as alterações que estão sendo feitas na pilha do CloudFormation .

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

1. Faça login no Console de gerenciamento da AWS e abra o console Step Functions em [https://console.aws.amazon.com/states/](https://console.aws.amazon.com/states/).

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

1. Encontre e escolha a nova máquina de estado na lista. Ele se chamará StockTradingStateMachine -*<unique-hash>*.

1. 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
<a name="tutorial-state-machine-using-sam-troubleshooting"></a>

### Erro da CLI do SAM: "no such option: --guided" (não existe essa opção: --guided)
<a name="tutorial-state-machine-using-sam-troubleshooting-guided"></a>

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 AWS SAM CLI que não suporta o `--guided` parâmetro. Para corrigir isso, você pode atualizar sua versão da AWS SAM CLI para 0.33.0 ou posterior ou omitir o parâmetro do `--guided` 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)
<a name="tutorial-state-machine-using-sam-troubleshooting-credentials"></a>

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 AWS credenciais para permitir que a AWS SAM CLI AWS faça chamadas de serviço. Para corrigir isso, você deve configurar AWS as credenciais. Para obter mais informações, consulte [Configuração de AWS credenciais](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started-set-up-credentials.html) no *Guia do AWS Serverless Application Model desenvolvedor*.

## Limpar
<a name="tutorial-state-machine-using-sam-cleanup"></a>

Se você não precisar mais dos AWS recursos criados ao executar este tutorial, poderá removê-los excluindo a CloudFormation pilha que você implantou.

Para excluir a CloudFormation pilha criada com este tutorial usando o Console de gerenciamento da AWS, siga estas etapas:

1. Faça login no Console de gerenciamento da AWS e abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. No painel de navegação à esquerda, selecione**Pilhas**.

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

1. Escolha **Excluir**.

Quando concluído, o status da pilha será alterado para **DELETE\$1COMPLETE**.

Como alternativa, você pode excluir a CloudFormation pilha executando o seguinte AWS CLI comando:

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

### Verificar pilha excluída
<a name="tutorial-state-machine-using-sam-cleanup-verify"></a>

Para os dois métodos de exclusão da CloudFormation pilha, você pode verificar se ela foi excluída acessando [https://console.aws.amazon.com/cloudformation](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.