Saiba como começar a usar o Step Functions - 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á.

Saiba como começar a usar o Step Functions

Com o serviço Step Functions, você pode orquestrar fluxos de trabalho complexos de aplicativos. Para começar, você usará o Workflow Studio para criar e executar um fluxo de trabalho Hello World integrado. Você revisará a definição gerada automaticamente Amazon States Language (ASL) no código. Por fim, você terá drag-and-drop uma integração de serviços para fazer análises de sentimentos.

Depois de concluir este tutorial, você saberá como usar o Workflow Studio para criar, configurar, executar e atualizar um fluxo de trabalho usando os modos Design e Código.

Duração estimada: 20-30 minutos

O que você vai construir

Sua primeira máquina de estado começará com estados de fluxo. Os estados de fluxo são usados para direcionar e controlar seu fluxo de trabalho. Depois de aprender a executar o fluxo de trabalho, você adicionará uma ação para integrar o serviço Amazon Comprehend a um estado de tarefa.

O diagrama a seguir mostra uma imagem da máquina de estado completa que você construirá. Quando você cria pela primeira vez a máquina de estado Hello World, ela não precisará de recursos adicionais para ser executada. O console Step Functions criará todos os estados e uma IAM função com um único clique. Posteriormente, ao adicionar a integração de serviços, você precisará criar uma função com uma política de permissão personalizada.

Representação visual do fluxo de trabalho Hello World.

Etapa 1 - Crie sua máquina de estado

Em Step Functions, os fluxos de trabalho são chamados de máquinas de estado. Usaremos os dois termos de forma intercambiável. Seus fluxos de trabalho conterão estados que atuam ou controlam o fluxo de suas máquinas de estado.

  1. Acesse o console Step Functions.

  2. No console do Step Functions, escolha “Step Functions” na navegação superior esquerda ou nas trilhas de navegação e, em seguida, escolha Get started:

    Captura de tela ilustrativa mostrando como começar a usar o fluxo de trabalho Hello World
  3. Nas opções, escolha Run Hello World:

    Captura de tela ilustrativa mostrando como escolher o fluxo de trabalho Hello World
dica

Recomendamos seguir o breve passo a passo no console para se familiarizar com a interface do usuário.

Visão geral do Workflow Studio

Com o Workflow Studio for Step Functions, você pode drag-and-drop declarar visualmente em uma tela para criar fluxos de trabalho.

Você pode 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 suas máquinas de estado.

Captura de tela ilustrativa das quatro áreas importantes da interface do Workflow Studio

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, onde você pode inserir drag-and-drop estados em seu fluxo de trabalho.

  • Código - um modo que se concentra no código da Amazon States Language, também conhecido como ASL código. Você pode editar o ASL código diretamente e ver as alterações refletidas no design visual.

  • Config - opções de configuração, incluindo o nome e o tipo da máquina de estado (Standard ou Express), função atribuída quando o fluxo de trabalho é executado, registro, rastreamento, controle de versão, criptografia e tags.

O navegador States contém as três guias a seguir:

  • Ações - uma lista do AWS APIs que você pode drag-and-drop inserir em seu fluxo de trabalho. Cada ação representa um estado do fluxo de trabalho da Tarefa.

  • Fluxo - estados de fluxo para controlar a ordem das etapas em seu fluxo de trabalho.

  • Padrões - ready-to-use blocos de construção 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ê drag-and-drop insere o gráfico do fluxo de trabalho, altera a ordem dos estados e seleciona os estados para configurar e testar.

O painel Inspector é onde você visualiza e edita as propriedades de qualquer estado selecionado 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 Pass que passa sua entrada para sua saída, sem realizar o trabalho. Os estados de passagem podem ser usados para gerar JSON saída estática ou transformar a JSON entrada antes de passar os dados para o próximo estado. Os estados de passagem são úteis ao construir e depurar máquinas de estado.

O próximo estado, um estado de escolha, usa os dados 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, em seguida, executará duas tarefas em um estado paralelo, antes de passar para um ponto de verificação e terminar com êxito o fluxo de trabalho. Quando não há correspondência, o fluxo de trabalho assume como padrão o estado Falha antes de parar a máquina de estado.

Os estados de espera podem ser úteis quando você deseja atrasar antes de realizar mais trabalhos. Talvez seu fluxo de trabalho espere 30 segundos após a entrada do pedido, para que seu cliente tenha tempo de perceber e corrigir um endereço de entrega incorreto.

Estados paralelos podem executar vários processos em seus dados. Talvez o fluxo de trabalho imprima um tíquete de pedido, atualize o estoque e aumente um relatório diário de vendas simultaneamente.

Imagem ilustrativa do fluxo de trabalho inicial do Hello World

Exibir o código do fluxo de trabalho (ASL)

Na verdade, sua primeira máquina de estado é bastante detalhada, então explore mais revisando o código.

As máquinas de estado são definidas usando a Amazon States Language (ASL), uma especificação de código aberto que descreve uma linguagem JSON baseada para descrever as máquinas de estado de forma declarativa.

Para ver toda a definição da máquina de estado

  1. Escolha o botão {} Código para visualizar o ASL código.

  2. Veja o código à esquerda e compare com o gráfico da máquina de estado à direita.

  3. Selecione alguns estados na tela para revisar. Por exemplo, escolha o estado de escolha.

Imagem ilustrativa da visualização de código

Você notou como a definição do estado é destacada na visualização do código?

Para ver o código no Inspector

  1. Volte para o modo Design.

  2. Expanda o painel Inspector à direita.

  3. Selecione o estado da Escolha no gráfico do fluxo de trabalho no Canvas.

  4. No painel Inspector, escolha a opção Definição.

Tente escolher outros estados. Viu como o ASL código de cada estado selecionado é exibido e destacado?

(Na verdade) Crie a máquina de estado

Aviso: nomeie sua máquina de estado agora!

Você não pode renomear uma máquina de estado depois de criá-la. Escolha um nome antes de salvar sua máquina de estado.

Até agora, você estava trabalhando em um rascunho de sua máquina estatal. Nenhum recurso foi criado ainda.

Para renomear e criar sua máquina de estado

  1. Escolha o modo Config.

  2. Para o nome da máquina de estado, insira MyFirstStateMachine

  3. Para obter permissões, aceite o padrão para Criar uma nova função.

  4. Escolha o botão Criar para realmente criar sua máquina de estado.

Você deve receber notificações de que sua máquina de estado e uma nova IAM função foram criadas.

Você verá automaticamente a opção de iniciar a máquina de estado. Você fará isso na próxima etapa!

Imagem ilustrativa do fluxo de trabalho inicial do Hello World
Criação de fluxo de trabalho alcançada!

Step Functions criou seu fluxo de trabalho e sua IAM função. Agora, você está pronto para iniciar sua máquina de estado.

Etapa 2 - Inicie sua máquina de estado

Depois que sua máquina de estado for criada, você poderá iniciar a execução do fluxo de trabalho.

Opcionalmente, os fluxos de trabalho recebem entradas que podem ser usadas no estado, 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 entrada.

Imagem ilustrativa de como começar

Para iniciar a máquina de estado

  1. Insira hello001 o nome da execução.

  2. Deixe o campo de entrada vazio.

  3. Escolha o botão Iniciar execução.

Imagem ilustrativa para iniciar um fluxo de trabalho.

Revise os detalhes da 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.

Você está se perguntando como o estado de escolha (é o exemplo do Hello World? ) decidiu migrar para o estado Wait for X Seconds?

  1. Dica: a primeira etapa na máquina de estados contém os dados necessários para a decisão da filial

  2. Na visualização gráfica, você pode monitorar o progresso durante a execução e explorar os detalhes de cada estado.

  3. Selecione o primeiro estado de passagem (chamado Definir variáveis e saída de estado) e, em seguida, revise a guia Entrada/Saída.

Você deve ver que a entrada de estado está em branco, mas a saída de estado contém o JSON que define o valor IsHelloWorldExample detrue.

Execução 001

Alterne da exibição de gráfico para a exibição de tabela para ver uma lista de estados por nome, tipo e status.

Execução 001: visualização da tabela
dica

Anote os campos Duração e Cronograma na captura de tela anterior. Em um piscar de olhos, você pode ver quais estados demoram mais do que outros.

Há mais duas visualizações para explorar nesta página de detalhes das execuções: visualização do evento e visualização do estado.

A visualização do evento é uma visão granular detalhada do fluxo de um estado para outro.

Expanda o primeiro PassStateEnterede os PassStateExitedeventos na tabela Visualização de eventos para ver como o estado não recebe nenhuma entrada, atribui uma variável chamada CheckpointCount valor zero e produz a saída que você viu anteriormente.

Visualização do evento Execution 001

Por fim, você tem a visualização do estado, que é semelhante à visualização da tabela. Na tabela de visualização do estado, você pode expandir seletivamente os estados para ver apenas as entradas e saídas de cada estado:

Execução 001: visualização do estado
Parabéns! Você executou sua primeira máquina de estado Step Functions!

Usar um estado de aprovação para adicionar dados estáticos em um fluxo de trabalho é um padrão comum, especialmente para solução de problemas.

Na próxima etapa, você atualizará o fluxo de trabalho para poder definir dinamicamente a entrada da máquina de estado.

Etapa 3 - Processar a entrada externa

Definir o valor de IsHelloWorldExample como um valor constante dentro do fluxo de trabalho não é realista. Você deve esperar que sua máquina de estado responda aos dados de entrada variáveis.

Nesta etapa, mostraremos como JSON os dados externos podem ser usados como entrada para seu fluxo de trabalho:

Processar entrada externa

Remova a entrada codificada

Primeiro, substitua o valor codificado na Saída do primeiro estado de passagem.

  1. Edite sua máquina de estado Hello World selecionando o botão Editar máquina de estado localizado no canto superior direito da página.

  2. Selecione o primeiro estado de passagem após Iniciar (chamado Definir variáveis e saída de estado) e, em seguida, selecione a guia Saída.

  3. Substitua a saída pela seguinteJSON:

    { "IsHelloWorldExample": "{% $states.input.hello_world %}", "ExecutionWaitTimeInSeconds": "{% $states.input.wait %}" }
  4. Salve a máquina de estado.

A saída de estado atualizada extrairá dados de entrada da variável $states reservada usando uma JSONata expressão. Esses valores serão passados para o próximo estado como saída para se tornarem a entrada para o próximo estado.

Execute o fluxo de trabalho atualizado, com dados de entrada

Em seguida, execute o fluxo de trabalho e forneça dados de entrada externos comoJSON.

  1. Escolha o botão Executar para executar o fluxo de trabalho.

  2. Para o Nome, use o ID gerado aleatoriamente.

  3. Use o seguinte JSON para o campo de entrada:

    { "wait" : 20, "hello_world": true }
  4. Escolha o 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 que você forneceu.

Na visualização do gráfico, revise a entrada/saída do primeiro estado de passagem. Observe como a entrada que você forneceu foi convertida em saídas. Além disso, dê uma olhada na entrada e saída da 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ê espera se executar uma nova execução com hello_world definido como false? Experimente!

Analise as execuções do fluxo de trabalho

Agora que você executou seu fluxo de trabalho algumas vezes, revise os detalhes da execução para revisar as execuções do seu fluxo de trabalho.

Para revisar os detalhes da execução

  1. Escolha Máquinas de estado nas trilhas de navegação ou no menu à esquerda.

  2. Escolha sua máquina de estado.

Na guia Execuções, você deve ver uma lista de execuções, semelhante à captura de tela a seguir:

Captura de tela ilustrativa que mostra uma lista de exemplos de execuções do fluxo de trabalho Hello.

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 cargas de trabalho 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 AWS serviços usando AWS SDKintegrações. AWS os serviços fornecem mais de 10.000 API ações potenciais para suas máquinas estaduais.

Nesta etapa, você integrará uma tarefa do Amazon Comprehend para análise de sentimentos para processar a entrada da sua máquina de estado.

As integrações de serviços usam um dos três padrões de integração de serviços:

  1. Solicitar uma resposta (padrão) - aguarde a HTTP resposta e prossiga imediatamente para o próximo estado.

  2. Run a Job (.sync) - aguarde a conclusão de um trabalho antes de passar para a próxima etapa.

  3. Aguarde o retorno de chamada (. waitForTaskToken) - pausa um fluxo de trabalho até que um token de tarefa seja retornado por um processo externo.

Captura de tela ilustrativa mostrando uma integração de serviços.

Para sua primeira integração, você usará o padrão de integração Request Response (padrão).

Como as integrações funcionam?

Um estado de tarefa representa uma única unidade de trabalho 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 informações para as API ações de outros serviços que, em seguida, realizam seu próprio trabalho. Você pode especificar o desempenho de uma tarefa usando vários campos, incluindo:Credentials,Retry, CatchTimeoutSeconds, e muito mais. Você pode aprender mais sobre Tarefas emEstado de tarefa do fluxo de trabalho.

Para usar AWS SDK integrações, você especifica o nome do serviço e APIa ser chamado. Algumas integrações também exigem parâmetros.

Você pode usar o Amazon States Language para especificar uma AWS API ação no campo Recurso de um estado de tarefa. Opcionalmente, você pode adicionar um tipo de integração de serviço ao nome do serviço.

Para especificar uma API ação, você usará o seguinte modelo de nome de recurso:

arn:aws:states:::aws-sdk:serviceName:apiAction.[serviceIntegrationPattern]
Caso do nome do parâmetro

Observe que API as ações serão camelCase(inicial minúscula), mas ParameterNamesserão em pascal (inicial maiúscula).

Exemplos de nomes de recursos

  • arn:aws:states:::aws-sdk:ec2:describeInstancesretornará os resultados da ligação para a Amazon EC2 describeInstances API.

  • arn:aws:states:::aws-sdk:s3:listBucketsretornará os resultados da chamada para o Amazon S3 listBuckets API.

  • arn:aws:states:::aws-sdk:sfn:startExecutioniniciará a execução de uma máquina de estado aninhada do Step Functions e retornará os resultados desse fluxo de trabalho.

Quando Step Functions chama outro serviço usando o Task estado, o padrão padrão é Request Response. Com o padrão de integração Request Response, o Step Functions chama um serviço, recebe uma resposta e passa imediatamente para o próximo estado.

Integração de detecção de sentimentos

Etapa 4.1 - Adicionar estado de análise de sentimentos

  1. Edite sua máquina de MyFirstStateMachineestado.

  2. No painel Ações no navegador de Estados, pesquise porDetectSentiment.

  3. Arraste e solte DetectSentimentComprehend na ramificação Padrão do estado Escolha.

  4. Selecione e exclua o estado Falha.

  5. Na guia Fluxo no navegador de estados, arraste o estado de sucesso depois DetectSentiment.

Etapa 4.2 - Configurar o estado da análise de sentimentos

  1. Selecione a etapa Comprehend para configurá-la no painel Inspector.

  2. Selecione a guia Argumentos e Saída e substitua os Argumentos pelos seguintesJSON:

    { "LanguageCode": "en", "Text": "{% %}" }
  3. Coloque o cursor entre os sinais de porcentagem: {% %} e digite: $

  4. Use o preenchimento automático no editor para escolherstates,

    em seguida, digite . e escolhacontext,

    em seguida, digite . e escolhaExecution,

    em seguida, digite . e escolhaInput,

    finalmente, digite .feedback_comment para recuperar a entrada inicial do objeto de contexto.

Depois de escolher essas 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 %}" }
Usando o 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 com suas definições!

Etapa 4.3 - Configurar uma política de identidade

Antes de executar o fluxo de trabalho, você precisa criar uma função e uma política para permitir que a máquina de estado realize API chamadas para o serviço externo.

Para criar uma IAM função para Step Functions

  1. Acesse o IAM console em uma nova guia e selecione Funções.

  2. Selecione Criar nova regra.

  3. Para Tipo de entidade confiável, escolhaAWS Service.

  4. Para o caso de uso, escolhaStep Functions.

  5. Em Adicionar permissões, escolha Avançar para aceitar a política padrão. Você adicionará uma política para Comprehend depois de criar a função.

  6. Em Nome, digite HelloWorldWorkflowRole.

  7. Selecione Criar perfil.

Para adicionar uma política ao HelloWorldWorkflowRoleAmazon Comprehend

  1. Selecione e edite a HelloWorldWorkflowRolefunção.

  2. Escolha Adicionar permissão e, em seguida, Criar política em linha.

  3. Selecione Comprehend para o serviço.

  4. Em Ler DetectSentiment, escolha e, em seguida, Avançar

  5. Em Nome da políticaDetectSentimentPolicy, digite e, em seguida, Criar política. Você deveria ter criado uma política semelhante à seguinte: JSON

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "comprehend:DetectSentiment" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

Para anexar a IAM função an à máquina de estado Step Functions

  1. Volte a editar sua máquina de estado e selecione a guia Config.

  2. No menu suspenso Função de execução, escolha. HelloWorldWorkflowRole

  3. Salve sua máquina de estado.

Etapa 4.4 - Execute sua 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::123456789012: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 anterior 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 DetectSentimentetapa. Dê uma olhada na entrada/saída nas várias visualizações para ver os resultados da detecção de sentimentos.

  • Encontre a duração do DetectSentiment estado na exibição da tabela.

  • Altere o comentário na JSONentrada e execute novamente sua máquina de estado.

Para saber mais sobre os resultados da análise de sentimentos, consulte Amazon Comprehend - Sentiment.

Uma forma de pensar sobre a integração da Solicitação e Resposta é que a resposta geralmente representa apenas uma confirmação da solicitação. No entanto, em algumas integrações, como a análise de sentimentos, o reconhecimento realmente representa a conclusão da tarefa.

O principal aprendizado é que o Task estado não espera pela tarefa subjacente nas integrações de Solicitação e Resposta. Para esperar por uma resposta, você precisará explorar o padrão de integração do serviço Run a Job (.sync).

Parabéns!

Você criou sua primeira máquina de estado e integrou uma tarefa de análise de sentimentos usando o padrão Request Response.

Limpar os recursos

Siga as etapas a seguir para limpar os recursos que você criou:

  1. Navegue até a página Step Functions no AWS Console.

  2. Selecione Máquinas de estado no painel de navegação à esquerda.

  3. Selecione o MyFirstStateMachine

  4. Para excluir as IAM funções

    1 - Siga o link da IAMfunção para acessar a página da IAM função em uma nova guia. Exclua a função relacionada personalizada.

    2 - Em IAM Funções, pesquise a função gerada automaticamente contendoMyFirstStateMachine. Exclua a função gerada automaticamente.

  5. Volte para a guia do console Step Functions e selecione o menu suspenso Ações e, em seguida, selecione Excluir para excluir a máquina de estado.

Sua máquina de estado e sua função relacionada agora devem ser excluídas com sucesso.