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