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á.
Tratar condições de erro usando uma máquina de estado Step Functions
Neste tutorial, você cria um AWS Step Functions máquina de estado com um Estados alternativos campo. O Catch
campo usa um AWS Lambda função para responder com lógica condicional com base no tipo de mensagem de erro. Essa é uma técnica denominada tratamento de erro de função.
Para ter mais informações, consulte AWS Lambda erros de função em Node.js no AWS Lambda Guia do desenvolvedor.
nota
Você pode também criar máquinas de estado que usem Tentar novamente para os limites de tempo ou que usem Catch
para mudar para um estado específico quando ocorre um erro ou um tempo limite é atingido. Para obter exemplos dessas técnicas de tratamento de erro, consulte Exemplos que usam retry e catch.
Etapa 1: Criar uma função do Lambda que apresenta falha
Use uma função do Lambda para simular uma condição de erro.
Importante
Certifique-se de que sua função Lambda esteja sob a mesma AWS conta e Região da AWS como sua máquina estatal.
-
Abra as AWS Lambda console em https://console.aws.amazon.com/lambda/
. -
Escolha a opção Criar função.
-
Escolha Usar um esquema, insira
step-functions
na caixa de pesquisa e escolha o esquema Throw a custom error (Lançar um erro personalizado). -
Em Function name (Nome da função), insira
FailFunction
. -
Para Função, retenha a seleção-padrão (Create a new role with basic Lambda permissions (Criar uma função com permissões básicas do Lambda)).
-
O código a seguir é exibido no painel Código de função do Lambda.
exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };
O objeto
context
retorna a mensagem de erroThis is a custom error!
. -
Escolha a opção Criar função.
-
Depois que sua função Lambda for criada, copie o Amazon Resource Name (ARN) da função exibido no canto superior direito da página. Veja a seguir um exemploARN:
arn:aws:lambda:us-east-1:123456789012:function:FailFunction
-
Escolha Implantar.
Etapa 2: testar a função do Lambda
Teste a função do Lambda para vê-la em operação.
-
Na FailFunctionpágina, escolha a guia Teste e, em seguida, escolha Teste. Não é necessário criar um evento de teste.
-
Para analisar os resultados do teste, em Resultado da execução, expanda Detalhes.
Etapa 3: Criar uma máquina de estado com um campo Capturar
Use o console do Step Functions para criar uma máquina de estado que use um estado Estado do fluxo de trabalho da tarefa com um campo Catch
. Adicione uma referência à função do Lambda no estado Tarefa. A máquina de estado invoca a função do Lambda, que falha durante a execução. O Step Functions tenta executar a função duas outras vezes usando recuo exponencial entre novas tentativas.
-
Abra o console do Step Functions
e clique em Criar máquina de estado. -
Na caixa de diálogo Escolher um modelo, selecione Em branco.
-
Escolha Selecionar para abrir o Workflow Studio emModo de design.
-
Selecione Código para abrir o editor de código. No editor de código, você escreve e edita a definição Amazon States Language (ASL) dos seus fluxos de trabalho.
-
Cole o código a seguir, mas ARN substitua a função Lambda que você criou anteriormente no
Resource
campo.{ "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "
arn:aws:lambda:us-east-1:123456789012:function:FailFunction
", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }Essa é uma descrição da máquina de estado usando a Amazon States Language. Ela define um estado
Task
específico denominadoCreateAccount
. Para obter mais informações, consulte Estrutura da máquina de estado.Para obter mais informações sobre a sintaxe do campo
Retry
, consulte Exemplos de máquinas de estado usando Retry e usando Catch.nota
Os erros não tratados no Lambda são relatados como
Lambda.Unknown
na saída do erro. Isso inclui out-of-memory erros e tempos limite de função. Você pode combinar comLambda.Unknown
,States.ALL
ouStates.TaskFailed
para lidar com esses erros. Quando o Lambda atinge o número máximo de invocações, o erro éLambda.TooManyRequestsException
. Para obter mais informações sobre LambdaHandled
eUnhandled
erros, consulteFunctionError
no AWS Lambda Guia do desenvolvedor. -
(Opcional) No Visualização de grafos, veja a visualização gráfica em tempo real do seu fluxo de trabalho.
-
Especifique um nome para a máquina de estado. Para fazer isso, escolha o ícone de edição ao lado do nome padrão da máquina de estado de MyStateMachine. Em seguida, em Configuração da máquina de estado, insira um nome na caixa Nome da máquina de estado.
Para este tutorial, insira
Catchfailure
. -
(Opcional) Em Configuração da máquina de estado, especifique outras configurações do fluxo de trabalho, como o tipo de máquina de estado e a função de execução.
Para este tutorial, mantenha todas as seleções padrão nas Configurações da máquina de estado.
-
Na caixa de diálogo Confirmar criação do perfil, selecione Confirmar para continuar.
Você também pode escolher Exibir configurações do perfil para voltar às Configurações da máquina de estado.
nota
Se você excluir a IAM função criada pelo Step Functions, o Step Functions não poderá recriá-la posteriormente. Da mesma forma, se você modificar a função (por exemplo, removendo Step Functions dos principais na IAM política), o Step Functions não poderá restaurar suas configurações originais posteriormente.
Etapa 4: Executar a máquina de estado
Depois que você criar uma máquina de estado, poderá executá-la.
-
Na página Máquinas de estado, escolha Catchfailure.
-
Na página Catchfailure, escolha Iniciar execução. A caixa de diálogo Iniciar execução é exibida.
-
Na caixa de diálogo Iniciar execução, faça o seguinte:
-
(Opcional) Insira um nome de execução personalizado para substituir o padrão gerado.
ASCIINão-nomes e registro
Step Functions aceita nomes para máquinas de estado, execuções, atividades e rótulos que não contenham ASCII caracteres. Como esses caracteres não funcionarão com a Amazon CloudWatch, recomendamos usar somente ASCII caracteres para que você possa acompanhar as métricas CloudWatch.
-
(Opcional) Na caixa Entrada, insira os valores de entrada no JSON formato para executar seu fluxo de trabalho.
-
Selecione Iniciar execução.
-
O console do Step Functions direciona você para uma página em que o título é o ID da execução. Essa página é conhecida como página de Detalhes da execução. Nesta página, você pode revisar os resultados da execução à medida que a execução avança ou após a conclusão.
Para revisar os resultados da execução, escolha estados individuais na Exibição em gráfico e, em seguida, escolha as guias individuais no painel Detalhes da etapa para visualizar os detalhes de cada estado, incluindo entrada, saída e definição, respectivamente. Para obter detalhes sobre as informações de execução que você pode visualizar na página Detalhes da execução, consulte Visão geral dos detalhes da execução.
Por exemplo, para visualizar sua mensagem de erro personalizada, escolha a CreateAccountetapa na visualização do gráfico e, em seguida, escolha a guia Saída.
nota
Você pode preservar a entrada de estado com o erro usando
ResultPath
. Consulte Use ResultPath para incluir erro e entrada em um Catch. -