Arquivo de configuração para integrações de serviços simuladas em 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á.

Arquivo de configuração para integrações de serviços simuladas em Step Functions

Para usar integrações de serviços simuladas, você primeiro deve criar um arquivo de configuração simulado chamado MockConfigFile.json contendo suas configurações simuladas. Em seguida, forneça ao Step Functions Local o arquivo de configuração simulado. Esse arquivo de configuração define casos de teste, que contêm estados simulados que usam respostas simuladas de integração de serviços. A seção a seguir contém informações sobre a estrutura da configuração simulada que inclui os estados simulados e as respostas simuladas:

Estrutura simulada do arquivo de configuração

Uma configuração simulada é um JSON objeto que contém os seguintes campos de nível superior:

  • StateMachines - Os campos desse objeto representam máquinas de estado configuradas para usar integrações de serviços simuladas.

  • MockedResponse - Os campos desse objeto representam respostas simuladas para chamadas de integração de serviços.

A seguir está um exemplo de um arquivo de configuração simulado que inclui uma definição StateMachine e MockedResponse.

{ "StateMachines":{ "LambdaSQSIntegration":{ "TestCases":{ "HappyPath":{ "LambdaState":"MockedLambdaSuccess", "SQSState":"MockedSQSSuccess" }, "RetryPath":{ "LambdaState":"MockedLambdaRetry", "SQSState":"MockedSQSSuccess" }, "HybridPath":{ "LambdaState":"MockedLambdaSuccess" } } } }, "MockedResponses":{ "MockedLambdaSuccess":{ "0":{ "Return":{ "StatusCode":200, "Payload":{ "StatusCode":200, "body":"Hello from Lambda!" } } } }, "LambdaMockedResourceNotReady":{ "0":{ "Throw":{ "Error":"Lambda.ResourceNotReadyException", "Cause":"Lambda resource is not ready." } } }, "MockedSQSSuccess":{ "0":{ "Return":{ "MD5OfMessageBody":"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51", "MessageId":"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51" } } }, "MockedLambdaRetry":{ "0":{ "Throw":{ "Error":"Lambda.ResourceNotReadyException", "Cause":"Lambda resource is not ready." } }, "1-2":{ "Throw":{ "Error":"Lambda.TimeoutException", "Cause":"Lambda timed out." } }, "3":{ "Return":{ "StatusCode":200, "Payload":{ "StatusCode":200, "body":"Hello from Lambda!" } } } } } }

Referência de campo de configuração simulada

As seções a seguir explicam os campos de objeto de nível superior que você deve definir em sua configuração simulada.

StateMachines

O objeto StateMachines define quais máquinas de estado usarão integrações de serviços simuladas. A configuração de cada máquina de estado é representada como um campo de nível superior de StateMachines. O nome do campo é o nome da máquina de estado e o valor é um objeto contendo um único campo chamado TestCases, cujos campos representam casos de teste dessa máquina de estado.

A sintaxe a seguir mostra uma máquina de estado com dois casos de teste:

"MyStateMachine": { "TestCases": { "HappyPath": { ... }, "SadPath": { ... } }
TestCases

Os campos de TestCases representam casos de teste individuais para a máquina de estado. O nome de cada caso de teste deve ser exclusivo por máquina de estado e o valor de cada caso de teste é um objeto que especifica uma resposta simulada a ser usada para estados de tarefas na máquina de estado.

O exemplo a seguir de um TestCase vincula dois estados Task a dois MockedResponses:

"HappyPath": { "SomeTaskState": "SomeMockedResponse", "AnotherTaskState": "AnotherMockedResponse" }

MockedResponses

MockedResponses é um objeto que contém vários objetos de resposta simulados com nomes de campo exclusivos. Um objeto de resposta simulada define o resultado bem-sucedido ou a saída de erro para cada invocação de um estado de tarefa simulado. Você especifica o número da invocação usando strings de números inteiros individuais, como “0”, “1”, “2” e “3”, ou um intervalo inclusivo de números inteiros, como “0-1”, “2-3”.

Ao simular uma tarefa, você deve especificar uma resposta simulada para cada invocação. Uma resposta deve conter um único campo chamado Return ou Throw cujo valor seja o resultado ou a saída de erro para a invocação simulada da Tarefa. Se você não especificar uma resposta simulada, a execução da máquina de estado falhará.

A seguir está um exemplo de um MockedResponse com objetos Throw e Return. Neste exemplo, nas primeiras três vezes em que a máquina de estado é executada, a resposta retornada é a especificada em "0-2", e na quarta vez em que a máquina de estado é executada, a resposta retornada é a especificada em "3".

"SomeMockedResponse": { "0-2": { "Throw": { ... } }, "3": { "Return": { ... } } }
nota

Se você estiver usando um estado Map e quiser garantir respostas previsíveis para o estado Map, defina o valor de maxConcurrency como 1. Se você definir um valor maior que 1, o Step Functions Local executará várias iterações simultaneamente, o que fará com que a ordem geral de execução dos estados nas iterações seja imprevisível. Isso pode ainda fazer com que o Step Functions Local use diferentes respostas simuladas para estados de iteração de uma execução para a próxima.

Return

Return é representado como um campo dos objetos MockedResponse. Ele especifica o resultado bem-sucedido de um estado de tarefa simulado.

Veja a seguir um exemplo de um objeto Return que contém uma resposta simulada para chamar Invoke em uma função do Lambda:

"Return": { "StatusCode": 200, "Payload": { "StatusCode": 200, "body": "Hello from Lambda!" } }
Throw

Throw é representado como um campo dos objetos MockedResponse. Ele especifica a saída de erro de uma tarefa com falha. O valor de Throw deve ser um objeto contendo campos Error e Cause com valores de string. Além disso, o valor da string que você especifica no campo Error do MockConfigFile.json deve corresponder aos erros tratados nas seções Retry e Catch da sua máquina de estado.

Veja a seguir um exemplo de um objeto Throw que contém uma resposta simulada para chamar Invoke em uma função do Lambda:

"Throw": { "Error": "Lambda.TimeoutException", "Cause": "Lambda timed out." }