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á.
Erros de depuração no console Step Functions
No tópico anteriorConfigurar entrada e saída, você aprendeu sobre filtragem e manipulação de dados. Na configuração da máquina de estado e na seleção de dados, você pode encontrar erros. Neste tópico final, você conhecerá a depuração de erros de tempo de execução usando o console Step Functions.
Você pode encontrar erros de tempo de execução, como:
Um JSON caminho inválido para o
Variable
campo noChoice
estado.Problemas de definição da máquina de estado, como nenhuma regra de correspondência em um estado
Choice
.Expressões de JSON caminho inválidas ao aplicar filtros para manipular a entrada e a saída.
Falhas na tarefa devido a uma exceção da função do Lambda.
IAMerros de permissão.
dica
Para obter opções adicionais de tratamento de erros, consulteTratamento de erros nos fluxos de trabalho do Step Functions.
Como depurar o caminho inválido Erro de estado de escolha
Quando você especifica um JSON caminho incorreto ou não solucionável no campo Variável do Choice
estado ou não define uma regra de correspondência no Choice
estado, você recebe um erro ao executar seu fluxo de trabalho.
Para ilustrar o erro de caminho inválido, este tutorial apresenta um erro de estado Choice
em seu fluxo de trabalho. Você usará a máquina de CreditCardWorkflowestado e editará sua definição para introduzir o erro.
Abra o console Step Functions e escolha a máquina de CreditCardWorkflowestado.
Escolha Editar para editar a definição da máquina de estado. Faça a alteração destacada no código a seguir na definição da máquina de estado.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Escolha Salvar e Salvar mesmo assim.
Execute a máquina de estado.
Na página Detalhes da execução da máquina de estado faça uma destas ações:
Escolha Causa na mensagem de erro para ver o motivo da falha na execução.
Escolha Mostrar detalhes da etapa na mensagem de erro para ver a etapa que causou o erro.
Na guia Input & Output (Entrada e saída) da seção Detalhes da etapa, escolha o botão de alternância Advanced View (Visualização avançada) para ver o caminho de transferência de dados de entrada e saída para um estado selecionado.
Em Exibição em gráfico, selecione Credit applied >= 5000? (Crédito aplicado >= 5000?) e faça o seguinte:
Visualize o valor de entrada do estado na caixa Entrada.
Escolha a guia Definição e observe o JSON caminho especificado para o campo Variável.
O valor de entrada para o crédito aplicado >= 5000? state é um valor numérico, embora você tenha especificado o JSON caminho para o valor de entrada como
$.Payload
. Durante a execução da máquina de estado, oChoice
estado não pode resolver esse JSON caminho porque ele não existe.
Edite a máquina de estado para especificar o valor do campo Variable (Variável) como
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Depurando erros de expressão de JSON caminho ao aplicar filtros de entrada e saída
Ao trabalhar com os filtros de entrada e saída, você pode encontrar erros de tempo de execução decorrentes da especificação de expressões de caminho inválidasJSON.
O exemplo a seguir usa a máquina de WorkflowInputOutputestado que você criou no Tutorial 5 e demonstra um cenário em que você usa o ResultSelector
filtro para selecionar partes da saída da tarefa.
Aplique o filtro
ResultSelector
para escolher uma parte da saída da tarefa para a etapa Verify identity (Verificar identidade). Para fazer isso, edite sua definição de máquina de estado da seguinte forma:{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Execute a máquina de estado.
Na página Detalhes da execução da máquina de estado, faça o seguinte:
Escolha Causa na mensagem de erro para ver o motivo da falha na execução.
Escolha Mostrar detalhes da etapa na mensagem de erro para ver a etapa que causou o erro.
Na mensagem de erro, observe que o conteúdo do nó $.payload.Body é uma string de escape. JSON O erro ocorreu porque você não pode se referir a uma string usando a notação de JSON caminho.
Para se referir ao nó $.Payload.body.message, faça o seguinte:
Use a função
States.StringToJSON
intrínseca para primeiro converter a string em um JSON formato.Especifique o JSON caminho para o nó $.payload.body.Message dentro da função intrínseca.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Execute a máquina de estado novamente.
Conclusão e próximas etapas
Parabéns! Você chegou ao fim de Tutorial de inicialização com Step Functions.
Limpeza
Agora que você concluiu a Introdução, é uma boa prática limpar (excluir) todos os recursos que você não deseja mais usar. A limpeza de AWS recursos evita que sua conta incorra em cobranças adicionais.