Saiba como começar a usar o Step Functions
Com o serviço do Step Functions, você pode orquestrar fluxos de trabalho complexos de aplicações. Para começar, você usará o Workflow Studio para criar e executar um fluxo de trabalho Hello World integrado. Você analisará a definição da Amazon States Language (ASL) gerada automaticamente no código. Por fim, você arrastará e soltará uma integração de serviços para fazer uma análise de sentimentos.
Após concluir este tutorial, você saberá como usar o Workflow Studio para criar, configurar, executar e atualizar fluxos de trabalho usando os modos Design e Código.
Duração estimada: 20 a 30 minutos
O que você desenvolverá
Sua primeira máquina de estado começará com estados de fluxo. Os estados de fluxo são usados para direcionar e controlar o fluxo de trabalho. Após aprender a executar o fluxo de trabalho, você adicionará uma Ação para integrar o serviço do Amazon Comprehend ao Estado de tarefa.
O diagrama a seguir mostra uma imagem completa da máquina de estado que você desenvolverá. Ao criar pela primeira vez a máquina de estado Hello World, ela não precisará de recursos adicionais para ser executada. O console do Step Functions criará todos os estados e um perfil do IAM com um único clique. Posteriormente, ao adicionar a integração de serviços, você precisará criar um perfil com uma política de permissão personalizada.
Etapa 1: Criar a máquina de estado
No Step Functions, os fluxos de trabalho são chamados de máquinas de estado. Usaremos ambos os termos de forma intercambiável. Os fluxos de trabalho conterão estados que atuam ou controlam o fluxo das máquinas de estado.
-
Acesse o console do Step Functions.
-
No menu de navegação superior esquerdo ou na navegação estrutural, selecione “Step Functions” e, em seguida, selecione Começar agora:
-
Nas opções, clique em Executar Hello World:
dica
Recomendamos seguir a breve demonstração no console para se familiarizar com a interface do usuário.
Visão geral do Workflow Studio
No Workflow Studio para o Step Functions, é possível arrastar e soltar visualmente estados em uma tela para criar fluxos de trabalho.
É possível adicionar e editar estados, configurar etapas, transformar resultados e configurar o tratamento de erros. A captura de tela a seguir mostra quatro áreas importantes da interface que você usará para criar as máquinas de estado.
Modos: o Workflow Studio fornece três modos de operação e usa como padrão o modo de design visual.
-
Design: um modo de edição visual, no qual é possível arrastar e soltar estados no fluxo de trabalho.
-
Código: um modo que se concentra no código da Amazon States Language, também conhecido como código da ASL. É possível editar o código da ASL diretamente e ver as alterações refletidas no design visual.
-
Config: as opções de configuração, incluindo o nome e o tipo da máquina de estado (Padrão ou Expressa), o perfil atribuído quando o fluxo de trabalho é executado, o registro em log, o rastreamento, o versionamento, a criptografia e as tags.
O navegador de estados contém as três seguintes guias:
-
Ações: uma lista de APIs da AWS que você pode arrastar e soltar em seu fluxo de trabalho. Cada ação representa um estado de fluxo de trabalho de tarefa.
-
Fluxo: estados de fluxo para controlar a ordem das etapas no fluxo de trabalho.
-
Padrões: blocos de construção prontos para uso e reutilizáveis, como o processamento iterativo de dados em um bucket do Amazon S3.
O gráfico de tela e fluxo de trabalho é onde você arrasta e solta estados no gráfico do fluxo de trabalho, altera a ordem e seleciona estados para configurar e testar.
No painel do inspetor, é possível visualizar e editar as propriedades de qualquer ação selecionada na tela. Você pode ativar o botão Definição para mostrar o código do estado atualmente selecionado.
Visão geral da máquina de estado
O fluxo de trabalho Hello World começa com um estado de passagem que transmite a entrada para a saída, sem realizar o trabalho. Os estados de passagem podem ser usados para gerar uma saída JSON estática ou transformar a entrada JSON antes de passar os dados para o próximo estado. Os estados de passagem são úteis na construção e depuração de máquinas de estado.
O estado seguinte, um estado de escolha, usa os dados do IsHelloWorldExample para escolher a próxima ramificação do fluxo de trabalho. Se a primeira regra corresponder, o fluxo de trabalho será pausado em um estado de espera e executará duas tarefas em um estado paralelo antes de passar para um ponto de verificação e encerrar com êxito o fluxo de trabalho. Quando não há correspondência, o fluxo de trabalho assume como padrão o estado de falha antes de interromper a máquina de estado.
Os estados de espera são úteis quando você deseja adiar o início de outros trabalhos. Talvez seu fluxo de trabalho espere 30 segundos após a entrada de um pedido; assim, seu cliente terá tempo de perceber e corrigir um endereço de entrega incorreto, por exemplo.
Estados paralelos podem executar vários processos em seus dados. Talvez o fluxo de trabalho imprima um tíquete de pedido, atualize o inventário e aumente um relatório diário de vendas simultaneamente.
Exibir o código do fluxo de trabalho (ASL)
Sua primeira máquina de estado é bem detalhada, portanto, explore mais analisando o código.
As máquinas de estado são definidas usando a Amazon States Language (ASL)
Como visualizar toda a definição da máquina de estado
-
Clique no botão { } Código para ver o código da ASL.
-
O código é exibido à esquerda. Você pode compará-lo com o gráfico da máquina de estado à direita.
-
Selecione alguns estados na tela para analisar. Por exemplo, selecione o estado de escolha.
Notou como a definição do estado é destacada na visualização do código?
Como ver o código no inspetor
-
Volte para o modo Design.
-
Expanda o painel do inspetor à direita.
-
Selecione o estado de escolha no gráfico do fluxo de trabalho na tela.
-
No painel do inspetor, selecione a opção Definição.
Tente selecionar outros estados. Notou como o código da ASL para cada estado selecionado é exibido e destacado?
(Vamos finalmente) Criar a máquina de estado
Aviso: nomeie sua máquina de estado agora!
Você não pode renomear uma máquina de estado após sua criação. Escolha um nome antes de salvar sua máquina de estado.
Até agora, você estava trabalhando em um rascunho de sua máquina de estado. Nenhum recurso foi criado.
Como renomear e criar sua máquina de estado
-
Selecione o modo Config.
-
Para o nome da máquina de estado, digite
MyFirstStateMachine -
Nas permissões, aceite o padrão para Criar um novo perfil.
-
Clique no botão Criar para finalmente criar sua máquina de estado.
Você receberá notificações de que sua máquina de estado e um novo perfil do IAM foram criados.
A opção de iniciar a máquina de estado será apresentada automaticamente. Faremos isso na próxima etapa.
Fluxo de trabalho criado!
O Step Functions criou seu fluxo de trabalho e o perfil do IAM. Agora está tudo pronto para iniciar a máquina de estado.
Etapa 2: Iniciar a máquina de estado
Após a criação da máquina de estado, você poderá iniciar a execução do fluxo de trabalho.
Opcionalmente, os fluxos de trabalho recebem entradas que podem ser usadas no estado. Elas são enviadas para serviços integrados e passadas para o próximo estado.
A máquina de estado Hello World é independente e não precisa de entradas.
Como iniciar a máquina de estado
-
Digite
hello001como o nome da execução. -
Deixe o campo de entrada vazio.
-
Clique no botão Iniciar execução.
Analisar os detalhes de execução
Imediatamente após o início, você verá que os dois primeiros estados foram bem-sucedidos.
Após uma breve espera, o restante das transições de estado será executado para concluir o fluxo de trabalho.
Está se perguntando como o estado de escolha (Is Hello World Example?) decidiu migrar para o estado Wait for X Seconds?
-
Dica: a primeira etapa na máquina de estado contém os dados necessários para a decisão da ramificação
-
Na visualização do gráfico, você pode monitorar o progresso durante a execução e explorar os detalhes de cada estado.
-
Selecione o primeiro estado de passagem (chamado Set Variables and State Output) e, em seguida, analise a guia Entrada/Saída.
A entrada de estado está em branco, mas a saída de estado contém o JSON que define o valor de IsHelloWorldExample como true.
Alterne da visualização do gráfico para a exibição de tabela para ver uma lista de estados por nome, tipo e status.
dica
Observe os campos Duração e Cronograma na captura de tela anterior. À primeira vista, você pode ver quais estados demoram mais.
Há mais duas visualizações para explorar nesta página de Detalhes da execução: visualização do evento e visualização do estado.
A visualização do evento é uma visualização granular detalhada do fluxo de um estado para outro.
Expanda os primeiros eventos PassStateEntered e PassStateExited na tabela da visualização do evento para ver como o estado não recebe nenhuma entrada, atribui uma variável CheckpointCount chamada valor zero e produz a saída que você viu anteriormente.
Por fim, temos a visualização do estado, que é semelhante à exibição de tabela. Na tabela de visualização do estado, você pode expandir seletivamente os estados para ver somente as entradas e saídas de cada estado:
Parabéns! Você executou sua primeira máquina de estado do Step Functions!
Usar um estado de passagem para adicionar dados estáticos em um fluxo de trabalho é um padrão comum, principalmente para a solução de problemas.
Na próxima etapa, você atualizará o fluxo de trabalho para poder definir dinamicamente a entrada da sua máquina de estado.
Etapa 3: Processar entradas externas
Definir o valor de IsHelloWorldExample como um valor constante no fluxo de trabalho não é realista. A máquina de estado deve responder a dados de entrada variáveis.
Nesta etapa, mostraremos como os dados JSON externos podem ser usados como entrada para seu fluxo de trabalho:
Remover entradas de codificação rígida
Primeiro, substitua o valor com codificação rígida na Saída do primeiro estado de passagem.
-
Edite sua máquina de estado Hello World clicando no botão Editar máquina de estado localizado no canto superior direito da página.
-
Selecione o primeiro estado de passagem após Iniciar (chamado Set Variables and State Output) e, em seguida, selecione a guia Saída.
-
Substitua a saída pelo seguinte JSON:
{ "IsHelloWorldExample": "{% $states.input.hello_world %}", "ExecutionWaitTimeInSeconds": "{% $states.input.wait %}" } -
Salve a máquina de estado.
A saída de estado atualizada extrairá dados de entrada da variável $states reservada usando uma expressão JSONata. Esses valores serão transmitidos para o próximo estado como saída para se tornarem a entrada do próximo estado.
Executar o fluxo de trabalho atualizado com dados de entrada
Em seguida, execute o fluxo de trabalho e forneça dados de entrada externos como JSON.
-
Clique no botão Executar para executar o fluxo de trabalho.
-
No Nome, use o ID gerado aleatoriamente.
-
Use o seguinte JSON no campo de entrada:
{ "wait" : 20, "hello_world": true } -
Clique no botão Iniciar execução.
A execução da sua máquina de estado deve esperar muito mais (20 segundos), mas, eventualmente, deverá ser bem-sucedida usando a entrada fornecida.
Na visualização do gráfico, analise a Entrada/Saída do primeiro estado de passagem. Observe como a entrada que você forneceu foi convertida em saídas. Além disso, confira a Entrada e saída de execução na parte superior da página de detalhes da execução. Ambos os locais mostram a entrada que você usou para iniciar a execução.
dica
O que você acha que pode acontecer se executar uma nova execução com hello_world definido como false? Experimente!
Analisar execuções do fluxo de trabalho
Agora que você executou seu fluxo de trabalho algumas vezes, revise os detalhes da execução para analisar as execuções do seu fluxo de trabalho.
Como analisar os detalhes da execução
-
Selecione Máquinas de estado na navegação estrutural ou no menu à esquerda.
-
Escolha sua máquina de estado.
Na guia Execuções, você verá uma lista de execuções, semelhante à seguinte captura de tela:
Uma observação final: os nomes de execução do fluxo de trabalho devem ser exclusivos e não podem ser reutilizados. Embora tenhamos sugerido um nome curto (hello001) neste tutorial, recomendamos usar uma convenção de nomenclatura que sempre será exclusiva para suas workloads de produção.
dica
Parabéns! Você modificou seu fluxo de trabalho para processar entradas externas que podem variar sempre que você executa seu fluxo de trabalho.
Etapa 4: Integrar um serviço
As máquinas de estado do Step Functions podem chamar mais de 220 serviços da AWS usando integrações do AWS SDK. Os serviços da AWS oferecem mais de 10 mil ações de API em potencial para suas máquinas de estado.
Nesta etapa, você integrará uma tarefa do Amazon Comprehend para análise de sentimentos a fim de processar a entrada da máquina de estado.
As integrações de serviços usam um dos três padrões de integração de serviços:
-
Resposta à solicitação (padrão): aguarde a resposta HTTP e vá imediatamente para o próximo estado.
-
Executar um trabalho (.sync): aguarde a conclusão de um trabalho antes de passar para a próxima etapa.
-
Aguardar retorno de chamada (.waitForTaskToken): pause um fluxo de trabalho até que um token de tarefa seja exibido.
Para sua primeira integração, você usará o padrão de integração Resposta à solicitação (padrão).
Como funcionam as integrações?
Um estado de tarefa representa uma unidade de trabalho específica executada por uma máquina de estado. Em sua máquina de estado, todo trabalho é realizado por tarefas.
Uma tarefa normalmente executa o trabalho passando a entrada às ações de API de outros serviços, que então realizam seu próprio trabalho. Você pode especificar o desempenho de uma tarefa usando vários campos, incluindo: Credentials, Retry, Catch, TimeoutSeconds, e muito mais. Saiba mais sobre tarefas em Estado de tarefa do fluxo de trabalho.
Para usar as integrações do AWS SDK, especifique o nome do serviço e a API a ser chamada. Algumas integrações também exigem parâmetros.
Você pode usar a Amazon States Language para especificar uma ação da API da AWS no campo Recurso de um estado de tarefa. Opcionalmente, você pode adicionar um tipo de integração do serviço.
Para especificar uma ação de API, use o seguinte modelo de nome de recurso:
arn:aws:states:::aws-sdk:serviceName:apiAction.[serviceIntegrationPattern]
Formatação do nome do parâmetro
Observe que as ações da API serão formatadas em camelCase (inicial minúscula), mas os ParameterNames serão formatadas em Pascal (inicial maiúscula).
Exemplos de nomes de recursos
-
arn:aws:states:::aws-sdk:ec2:describeInstancesretornará os resultados da chamada da API describeInstances do Amazon EC2. -
arn:aws:states:::aws-sdk:s3:listBucketsretornará os resultados da chamada da API listBuckets do Amazon S3. -
arn:aws:states:::aws-sdk:sfn:startExecutioniniciará a execução aninhada de uma máquina de estado do Step Functions e retornará os resultados desse fluxo de trabalho.
Quando o Step Functions chama outro serviço usando o estado Task, o padrão é Resposta à solicitação. Com o padrão de integração Resposta à solicitação, o Step Functions chama um serviço, recebe uma resposta e passa imediatamente para o próximo estado.
Etapa 4.1: Adicionar o estado de análise de sentimento
-
Edite a máquina de estado MyFirstStateMachine.
-
No painel Ações no navegador de estados, pesquise por
DetectSentiment. -
Arraste e solte Comprehend DetectSentiment na ramificação Padrão do estado de escolha.
-
Selecione e exclua o estado Falha.
-
Na guia Fluxo do navegador de estados, arraste o estado Sucesso abaixo de DetectSentiment.
Etapa 4.2: Configurar o estado da análise de sentimentos
-
Selecione a etapa Comprehend para configurá-la no painel do inspetor.
-
Selecione a guia Argumentos e saída e substitua os argumentos pelo seguinte JSON:
{ "LanguageCode": "en", "Text": "{% %}" } -
Coloque o cursor entre os sinais de porcentagem
{% %}e digite:$ -
Use o preenchimento automático no editor para selecionar
states,digite
.e selecionecontext,digite
.e selecioneExecution,digite
.e selecioneInput,por fim, digite
.feedback_commentpara recuperar a entrada inicial do objeto de contexto.
Após escolher as opções de preenchimento automático, você deve ter o seguinte JSON para os argumentos do seu estado:
{ "LanguageCode": "en", "Text": "{% $states.context.Execution.Input.feedback_comment %}" }
Uso do preenchimento automático do editor
Com o preenchimento automático do editor, você pode explorar suas opções.
O preenchimento automático listará suas variáveis, a variável $states reservada que contém o objeto de contexto e as funções disponíveis e suas definições.
Etapa 4.3: Configurar uma política de identidade
Antes de executar o fluxo de trabalho, você precisa criar um perfil e uma política para permitir que a máquina de estado realize chamadas de API ao serviço externo.
Como criar um perfil do IAM para o Step Functions
-
Acesse o console do IAM em uma nova guia e selecione Perfis.
-
Selecione Criar nova regra.
-
Em Tipo de entidade confiável, selecione
Serviço da AWS. -
Para Caso de uso, selecione
Step Functions. -
Em Adicionar permissões, clique em Próximo para aceitar a política padrão. Você adicionará uma política para o Comprehend após criar o perfil.
-
Em Nome, insira
HelloWorldWorkflowRole. -
Selecione Criar perfil.
Como adicionar uma política ao HelloWorldWorkflowRole do Amazon Comprehend
-
Selecione e edite a função HelloWorldWorkflowRole.
-
Selecione Adicionar permissão e, em seguida, Criar política em linha.
-
Para serviço, selecione Comprehend.
-
Em Leitura, selecione DetectSentiment e depois clique em Próximo.
-
Para o Nome da política, digite
DetectSentimentPolicye, em seguida, selecione Criar política.
Se você revisar a política, verá que ela permite que todos os recursos realizem a ação "comprehend:DetectSentiment".
Como anexar o perfil do IAM à máquina de estado do Step Functions
-
Volte à edição da máquina de estado e selecione a guia Config.
-
No menu suspenso Perfil de execução, selecione
HelloWorldWorkflowRole. -
Salve sua máquina de estado.
Etapa 4.4: Executar a máquina de estado
Comece a executar sua máquina de estado com o seguinte JSON para entrada:
{ "hello_world": false, "wait": 42, "feedback_comment" : "This getting started with Step Functions workshop is a challenge!" }
Sem a política correta, você receberá um erro de permissões semelhante ao seguinte:
User: arn:aws:sts::account-id:assumed-role/StepFunctions-MyStateMachine-role is not authorized
to perform: comprehend:DetectSentiment because no identity-based policy allows the comprehend:DetectSentiment
action (Service: Comprehend, Status Code: 400, Request ID: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111)
A mensagem de erro acima informa que sua máquina de estado não está autorizada a usar o serviço externo. Volte uma etapa e verifique se você configurou uma política de identidade.
Pratique o que você aprendeu!
Antes de mergulhar em fluxos de trabalho mais complexos, pratique o que você aprendeu com as seguintes tarefas:
-
Revise a etapa DetectSentiment. Consulte a entrada/saída nas várias visualizações para ver os resultados da detecção de sentimentos.
-
Encontre a duração do estado DetectSentiment na exibição de tabela.
-
Altere o comentário na entrada JSON e execute novamente sua máquina de estado.
Para saber mais sobre os resultados da análise de sentimentos, consulte Amazon Comprehend: Sentimento.
Uma forma de pensar sobre a integração da Resposta à solicitação é que a resposta geralmente representa uma confirmação da solicitação. No entanto, em algumas integrações, como a análise de sentimentos, essa confirmação representa a conclusão da tarefa.
O principal ponto é que o estado Task não espera pela tarefa subjacente nas integrações de Resposta à solicitação. Para aguardar por uma resposta, você precisará explorar o padrão de integração do serviço Executar um serviço (.sync).
Parabéns!
Você criou sua primeira máquina de estado e integrou uma tarefa de análise de sentimentos usando o padrão Resposta à solicitação.
Valorizamos o seu feedback.
Se você achou este tutorial de introdução útil ou tem sugestões para aprimorá-lo, entre em contato conosco usando as opções de feedback nesta página.
Limpar recursos.
Siga as seguintes etapas para limpar os recursos criados:
-
Navegue até a página do Step Functions
no Console da AWS. -
Selecione Máquinas de estado no painel de navegação à esquerda.
-
Selecione MyFirstStateMachine
-
Como excluir os perfis do IAM
1 - Siga o link do perfil do IAM para acessar a página do perfil do IAM em uma nova guia. Exclua o perfil relacionado personalizado.
2 - Em Perfis do IAM, pesquise o perfil gerado automaticamente contendo
MyFirstStateMachine. Exclua o perfil gerado automaticamente. -
Retorne à guia do console Step Functions e selecione o menu suspenso Ações e, em seguida, selecione Excluir para excluir a máquina de estado.
A máquina de estado e o perfil relacionado devem ser excluídos com sucesso.