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."
}