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.
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.
-
Acesse o console Step Functions.
-
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:
-
Nas opções, escolha Run 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.
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.
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)
Para ver toda a definição da máquina de estado
-
Escolha o botão {} Código para visualizar o ASL código.
-
Veja o código à esquerda e compare com o gráfico da máquina de estado à direita.
-
Selecione alguns estados na tela para revisar. Por exemplo, escolha o estado de escolha.
Você notou como a definição do estado é destacada na visualização do código?
Para ver o código no Inspector
-
Volte para o modo Design.
-
Expanda o painel Inspector à direita.
-
Selecione o estado da Escolha no gráfico do fluxo de trabalho no Canvas.
-
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
-
Escolha o modo Config.
-
Para o nome da máquina de estado, insira
MyFirstStateMachine
-
Para obter permissões, aceite o padrão para Criar uma nova função.
-
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!
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.
Para iniciar a máquina de estado
-
Insira
hello001
o nome da execução. -
Deixe o campo de entrada vazio.
-
Escolha o botão Iniciar execução.
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?
-
Dica: a primeira etapa na máquina de estados contém os dados necessários para a decisão da filial
-
Na visualização gráfica, você pode monitorar o progresso durante a execução e explorar os detalhes de cada estado.
-
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
.
Alterne da exibição de gráfico para a exibição de tabela para ver uma lista de estados por nome, tipo e status.
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.
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:
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:
Remova a entrada codificada
Primeiro, substitua o valor codificado na Saída do primeiro estado de passagem.
-
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.
-
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.
-
Substitua a saída pela seguinteJSON:
{ "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 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.
-
Escolha o botão Executar para executar o fluxo de trabalho.
-
Para o Nome, use o ID gerado aleatoriamente.
-
Use o seguinte JSON para o campo de entrada:
{ "wait" : 20, "hello_world": true }
-
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
-
Escolha Máquinas de estado nas trilhas de navegação ou no menu à esquerda.
-
Escolha sua máquina de estado.
Na guia Execuções, você deve ver uma lista de execuções, semelhante à captura de tela a seguir:
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:
-
Solicitar uma resposta (padrão) - aguarde a HTTP resposta e prossiga imediatamente para o próximo estado.
-
Run a Job (.sync) - aguarde a conclusão de um trabalho antes de passar para a próxima etapa.
-
Aguarde o retorno de chamada (. waitForTaskToken) - pausa um fluxo de trabalho até que um token de tarefa seja retornado por um processo externo.
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
, Catch
TimeoutSeconds
, 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:describeInstances
retornará os resultados da ligação para a Amazon EC2 describeInstances API. -
arn:aws:states:::aws-sdk:s3:listBuckets
retornará os resultados da chamada para o Amazon S3 listBuckets API. -
arn:aws:states:::aws-sdk:sfn:startExecution
iniciará 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.
Etapa 4.1 - Adicionar estado de análise de sentimentos
-
Edite sua máquina de MyFirstStateMachineestado.
-
No painel Ações no navegador de Estados, pesquise por
DetectSentiment
. -
Arraste e solte DetectSentimentComprehend na ramificação Padrão do estado Escolha.
-
Selecione e exclua o estado Falha.
-
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
-
Selecione a etapa Comprehend para configurá-la no painel Inspector.
-
Selecione a guia Argumentos e Saída e substitua os Argumentos pelos seguintesJSON:
{ "LanguageCode": "en", "Text": "{% %}" }
-
Coloque o cursor entre os sinais de porcentagem:
{% %}
e digite:$
-
Use o preenchimento automático no editor para escolher
states
,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
-
Acesse o IAM console em uma nova guia e selecione Funções.
-
Selecione Criar nova regra.
-
Para Tipo de entidade confiável, escolha
AWS Service
. -
Para o caso de uso, escolha
Step Functions
. -
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.
-
Em Nome, digite
HelloWorldWorkflowRole
. -
Selecione Criar perfil.
Para adicionar uma política ao HelloWorldWorkflowRoleAmazon Comprehend
-
Selecione e edite a HelloWorldWorkflowRolefunção.
-
Escolha Adicionar permissão e, em seguida, Criar política em linha.
-
Selecione Comprehend para o serviço.
-
Em Ler DetectSentiment, escolha e, em seguida, Avançar
-
Em Nome da política
DetectSentimentPolicy
, 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
-
Volte a editar sua máquina de estado e selecione a guia Config.
-
No menu suspenso Função de execução, escolha.
HelloWorldWorkflowRole
-
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:
-
Navegue até a página Step Functions
no AWS Console. -
Selecione Máquinas de estado no painel de navegação à esquerda.
-
Selecione o MyFirstStateMachine
-
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 contendo
MyFirstStateMachine
. Exclua a função gerada automaticamente. -
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.