Programar um fluxo de trabalho sem servidor

com o AWS Step Functions e o Amazon CloudWatch

A automatização de como você responde a eventos operacionais para recursos da conta da AWS pode ajudar a reduzir os custos operacionais indiretos da estrutura da Nuvem AWS. Como exemplo real, se você for engenheiro de DevOps ou gerente de TI, poderá querer automatizar trabalhos de ETL, sincronização de dados ou segurança.

Para solucionar esse desafio, você pode executar um fluxo de trabalho sem servido segundo um cronograma. O Amazon CloudWatch Events fornece um stream de eventos do sistema praticamente em tempo real que descreve as alterações e notificações dos recursos da AWS. A partir desse stream, é possível criar regras para rotear eventos específicos para o AWS Step Functions e invocar uma máquina de estado para executar processamento adicional. O AWS Step Functions permite coordenar vários serviços em fluxos de trabalho sem servidor para possibilitar a criação e a atualização de processos automatizados rapidamente.

Neste tutorial, você usará o Step Functions para organizar um fluxo de trabalho sem servidor em resposta a um evento do CloudWatch. Em primeiro lugar, você criará uma máquina de estado muito simples usando o AWS Step Functions Em seguida, você usará o Amazon CloudWatch Events para definir uma regra que execute a máquina de estada a cada minuto. Embora este tutorial invoque um fluxo de trabalho segundo um cronograma, ele pode ser generalizado para se integrar com outros serviços da AWS geradores de eventos.

Você usará o AWS Step Functions e o Amazon CloudWatch neste tutorial. Ambos os serviços estão no nível gratuito da AWS.

Este tutorial exige uma conta da AWS

Não há cobranças adicionais para o Step Functions nem para o CloudWatch. Os recursos criados neste tutorial estão qualificados para o nível gratuito. 

Saiba mais sobre o nível gratuito >>


Etapa 1. Criar uma função do AWS Identity and Access Management (IAM)

O AWS Step Functions pode executar código e acessar outros recursos da AWS (por exemplo, dados armazenados em buckets do Amazon S3). Para manter a segurança, é preciso conceder acesso do Step Functions a esses recursos usando o AWS Identity and Access Management (IAM).


a. Abra o Console de gerenciamento da AWS em uma nova janela do navegador para manter este guia detalhado aberto. Quando a tela carregar, digite seu nome de usuário e senha para começar. Em seguida, digite IAM na barra de pesquisa e selecione IAM para abrir o console do serviço.

01a
01a

(clique para aumentar)


b.  Clique em Roles (Funções) e escolha Create Role (Criar função).

01b
01b

(clique para aumentar)


c. Na página Selecionar tipo de entidade de confiança, em Serviço da AWS, selecione Step Functions na lista e, em seguida, Próximo: Permissões.

01c
01c

(clique para aumentar)


d. Na página Attach permissions policy (Anexar política de permissões), escolha Next: Review (Próximo: Revisar).

01d
01d

(clique para aumentar)


e. Na página Review (Revisar), digite step_functions_basic_execution para Role name (Nome da função) e clique em Create role (Criar função).

01e
01e

(clique para aumentar)


f. A nova função do IAM está criada.

01f
01f

(clique para aumentar)


Etapa 2. Criar uma máquina de estado do AWS Step Functions

Nesta etapa, você criará uma máquina de estado simples e de execução independente usando um Estado de passagem. Um Estado de passagem simplesmente passa a entrada para a saída sem executar, na realidade qualquer trabalho.

Em situações reais, fluxos de trabalho sem servidor podem fazer o que for necessário. É possível coordenar diversas funções do Lambda para executar tarefas, tomar decisões etc. Contudo, quanto a este tutorial, mantermos o fluxo de trabalho simples.


a. Abra o console do AWS Step Functions. O Sterp Functions oferece diversas máquinas de estado predefinidas como modelos. Neste tutorial, você criará uma máquina de estado usando o modelo Hello World. Na página Criar uma máquina de estado, selecione Modelos e, em seguida, escolha Hello World.

02c
02c

(clique para aumentar)


b. Na seção Detalhes , digite o Nome da máquina de estado ScheduledWorkflow e, em seguida, em Função do IAM, selecione Usarei uma função existente. Em Funções do IAM existentes, selecione a função do IAM que você criou, step_functions_basic_execution.

02d
02d

(clique para aumentar)


c. O Step Functions preenche automaticamente o nome da máquina de estado. Ele também preenche o painel Definição da máquina de estado com a descrição da Amazon States Language da máquina de estado. Para obter mais informações sobre como definir máquinas de estado, consulte Estrutura de máquinas de estado.

Façamos alguma modificações simples na sua máquina de estado

Nas linhas 2 e 5, substitua “HelloWorld” por “Do Something”
Na linha 7, substitua “Hello World!” por “Work complete!”

Em seguida, clique no botão de atualização ao lado do fluxo de trabalho visual para atualizar o diagrama da máquina de estado e refletir as alterações.

02e
02e

(clique para aumentar)


d. Escolha Criar máquina de estado. Agora, a máquina de estado está ponta para ser executada.

02f
02f

(clique para aumentar)


Etapa 3. Criar uma Regra do Amazon CloudWatch Events

Agora que criou sua máquina de estado, você pode criar uma regra do Amazon CloudWatch Events que execute a máquina de estado de acordo com um cronograma. O Amazon CloudWatch Events oferece um streaming de eventos do sistema quase em tempo real que descrevem as mudanças nos recursos do Amazon Web Services (AWS). Usando regras simples que você pode definir rapidamente, combine eventos e encaminhe-os para uma ou mais funções ou streams de destino.


a. Abra uma nova guia no navegador. Navegue para o console do CloudWatch Events digitando CloudWatch na barra de pesquisa.

03a
03a

(clique para aumentar)


b. Selecione Eventos e, em seguida, Criar regra.  

03b
03b

(clique para aumentar)


c. A página Etapa 1: Criar regra é exibida. Na seção Origem de eventos, selecione Cronograma. Em Frequência fixa de, digite 1 e deixe a unidade de “Minutos” selecionada.

03c
03c

(clique para aumentar)


d. Na seção Destinos, selecione Adicionar destino. SelecioneMáquina de estado do Step Functions na lista e selecione sua máquina de estado ScheduledWorkflow.

Selecione Configurar entrada e, em seguida, Evento correspondente. Com isso, os detalhes do evento do CloudWatch Event serão transferidos como entrada para o Step Functions toda vez que ele executar uma instância da máquina de estado.

Selecione Criar uma nova função para esse recurso específico e, em seguida, clique em Configurar detalhes.

03d
03d

(clique para aumentar)


e. A página Etapa 2: Configurar detalhes da regra é exibida. Digite execute_state_machine como Nome da regra, deixe marcada a opção Habilitada para estado e, em seguida, selecione Criar regra.

A regra é criada e a página Regras é exibida, listando todas as suas regras do CloudWatch Events.

Uma nova execução da sua máquina de estado ocorrerá a cada minuto.

03e
03e

(clique para aumentar)


Etapa 4. Personalizar a maneira como sua máquina de estado lida com entrada e saída

Em seguida, você personalizará a maneira como sua máquina de estado lida com entrada e saída. Entender como as informações fluem entre um estado e outro e saber como filtrar e manipular esses dados ajudarão você a projetar e implementar com eficácia fluxos de trabalho no AWS Step Functions.


a. De volta ao console do Step Functions, a máquina de estado ScheduledWorkflow ainda deve estar sendo exibida. Clique em Editar.

04a
04a

(clique para aumentar)


b. Na janela Definição da máquina de estado, consulte a linha 7 da máquina de estado. O campo Resultado no estado Passagem especifica a saída que deve ser passada para o próximo estado. Como sua máquina de estado só tem um estado, a mensagem “Trabalho concluído!” será passada para o estado final do fluxo de trabalho.

Lembre-se de que um estado de Passagem do Step Functions simplesmente passa a entrada para a saída. É possível usar o campo ResultPath para modificar a saída de um estado. Por exemplo, é possível substituir o estado pelo resultado que ele produz (como a saída de uma função do Lambda do estado Tarefa).

Para combinar a entrada do estado com seu resultado, adicione uma nova linha depois da linha 7 e digite:

"ResultPath": "$.taskresult",

Essa ação combinará os detalhes do evento do CloudWatch que invocou a execução da máquina de estado com a saída do estado de Passagem, neste caso, “Trabalho concluído!”. Para obter mais informações, consulte Processamento de entrada e saída no Step Functions.

04b
04b

(clique para aumentar)


c. Clique em Salvar.

04c
04c

(clique para aumentar)


Etapa 5. Confirmar se o fluxo de trabalho está funcionando conforme esperado

Agora que você habilitou sua função do CloudWatch Events, o CloudWatch acionará uma execução do fluxo de trabalho da máquina de estado a cada minuto. Nesta etapa, você observará essas execuções e verificará que os detalhes do CloudWatch Event estão sendo capturados pelo Step Functions.


a. De volta ao console do Step Functions, clique em ScheduledWorkflow na barra trilha na parte superior da página.

05a
05a

(clique para aumentar)


b. Em Execuções, observe as execuções que são ativadas por eventos do CloudWatch. Clique no botão Atualizar para atualizar a janela para observar o surgimento de novas execuções da sua máquina de estado. Aguarde alguns minutos até que, pelo menos, duas instâncias do seu fluxo de trabalho sejam acionadas.

05b
05b

(clique para aumentar)


c. Clique com o botão direito do mouse em uma das execuções e abra o link em uma nova guia do navegador. Repita o procedimento para outra execução da máquina de estado.

Em cada guia, clique no estado “Fazer algo” no painel de fluxo de trabalho Visual para preencher o painel de detalhes do Step à direita.

Clicando em Entrada, é possível ver os detalhes do evento correspondente do CloudWatch. Observe as diferenças nos eventos, como os campos “id” e “horário”.

05c
05c

(clique para aumentar)


d. Em cada guia, expanda Saída no painel detalhes do Step. Observe que a entrada foi combinada com a saída do estado “Fazer algo”.

05d
05d

(clique para aumentar)


Etapa 6. Encerrar seus recursos

Nesta etapa, você encerrará os recursos do AWS Step Functions e do Amazon CloudWatch.

Importante: é recomendável encerrar os recursos que não estão em uso, pois isso reduz custos. Pode haver cobranças caso os recursos não sejam encerrados.


a. Feche as guias de cada execução da máquina de estado. Na parte superior da janela do Step Functions, clique em Máquinas de estado.

06a
06a

(clique para aumentar)


b. Na janela Máquinas de estado, clique na máquina de estado que você criou para este tutorial e selecione Excluir. Confirme a ação selecionando Excluir máquina de estado na caixa de diálogo. Sua máquina de estado será excluída em um ou dois minutos assim que o Step Functions confirmar que as execuções em andamento estão concluídas.

06b
06b

(clique para aumentar)


c. Em seguida, você excluirá a regra do Amazon CloudWatch Events. No console do CloudWatch, clique em Ações e, a seguir, em Excluir. Confirme a exclusão clicando novamente em Excluir.

06c
06c

(clique para aumentar)


d. Clique em Serviços e, e,m seguida, digite IAM na barra de pesquisa para navegar até o console do IAM.

06d

(clique para aumentar)


e. Clique em Funções.

06e
06e

(clique para aumentar)


f. Selecione as duas funções do IAM que você criou para este tutorial e clique em Delete role (Excluir função). Confirme a exclusão clicando em Yes, Delete (Sim, excluir) na caixa de diálogo.

Agora você pode fazer logout no Console de Gerenciamento da AWS.

06f
06f

(clique para aumentar)


Parabéns!

Você programou, com êxito, um fluxo de trabalho sem servidor para execução a cada minuto.
O AWS Step Functions permite que você inspecione e audite a execução de tarefas recorrentes para confirmar se elas são executadas de forma consistente. Ao combinar o AWS Step Functions com o Amazon CloudWatch Events, é possível automatizar tarefas diárias, semanais e mensais ou acionar a execução de fluxos de trabalho do Step Functions quando determinadas condições são atendidas.