Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
File di configurazione per integrazioni di servizi simulate in Step Functions
Per utilizzare integrazioni di servizi simulate, devi prima creare un file di configurazione fittizio denominato contenente le tue configurazioni fittizie. MockConfigFile.json
Quindi fornisci a Step Functions Local il file di configurazione fittizio. Questo file di configurazione definisce i casi di test, che contengono stati fittizi che utilizzano risposte simulate di integrazione dei servizi. La sezione seguente contiene informazioni sulla struttura della configurazione fittizia che include gli stati fittizi e le risposte simulate:
Struttura fittizia del file di configurazione
Una configurazione fittizia è un JSON oggetto contenente i seguenti campi di primo livello:
-
StateMachines
- I campi di questo oggetto rappresentano macchine a stati configurate per utilizzare integrazioni di servizi simulate. -
MockedResponse
- I campi di questo oggetto rappresentano risposte simulate per le chiamate di integrazione dei servizi.
Di seguito è riportato un esempio di un file di configurazione fittizio che include una StateMachine
definizione 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!"
}
}
}
}
}
}
Riferimento al campo di configurazione fittizio
Le sezioni seguenti spiegano i campi oggetto di primo livello che è necessario definire nella configurazione fittizia.
StateMachines
L'StateMachines
oggetto definisce quali macchine a stati utilizzeranno integrazioni di servizi simulate. La configurazione per ogni macchina a stati è rappresentata come un campo di primo livello di. StateMachines
Il nome del campo è il nome della macchina a stati e il valore è un oggetto contenente un singolo campo denominatoTestCases
, i cui campi rappresentano i casi di test di quella macchina a stati.
La sintassi seguente mostra una macchina a stati con due casi di test:
"MyStateMachine": {
"TestCases": {
"HappyPath": {
...
},
"SadPath": {
...
}
}
TestCases
I campi TestCases
rappresentano singoli casi di test per la macchina a stati. Il nome di ogni test case deve essere univoco per macchina a stati e il valore di ogni test case è un oggetto che specifica una risposta simulata da utilizzare per gli stati Task nella macchina a stati.
L'esempio seguente TestCase
collega due Task
stati a due: MockedResponses
"HappyPath": {
"SomeTaskState": "SomeMockedResponse",
"AnotherTaskState": "AnotherMockedResponse"
}
MockedResponses
MockedResponses
è un oggetto contenente più oggetti di risposta simulati con nomi di campo univoci. Un oggetto di risposta simulato definisce il risultato positivo o l'output di errore per ogni invocazione di uno stato Task simulato. È possibile specificare il numero di invocazione utilizzando singole stringhe di numeri interi, come «0", «1", «2" e «3" o un intervallo inclusivo di numeri interi, come «0-1», «2-3».
Quando si simula un Task, è necessario specificare una risposta simulata per ogni invocazione. Una risposta deve contenere un singolo campo denominato Return
o il Throw
cui valore è l'output del risultato o dell'errore per la chiamata simulata del Task. Se non si specifica una risposta simulata, l'esecuzione della macchina a stati avrà esito negativo.
Di seguito è riportato un esempio di MockedResponse
con Throw
e Return
oggetti. In questo esempio, le prime tre volte che viene eseguita la macchina a stati, "0-2"
viene restituita la risposta specificata in e la quarta volta che viene eseguita la macchina a stati, "3"
viene restituita la risposta specificata in.
"SomeMockedResponse": {
"0-2": {
"Throw": {
...
}
},
"3": {
"Return": {
...
}
}
}
Nota
Se utilizzate uno Map
stato e desiderate garantire risposte prevedibili per Map
tale stato, impostate il valore su 1. maxConcurrency
Se imposti un valore maggiore di 1, Step Functions Local eseguirà più iterazioni contemporaneamente, il che renderà imprevedibile l'ordine di esecuzione complessivo degli stati tra le iterazioni. Ciò potrebbe inoltre far sì che Step Functions Local utilizzi risposte simulate diverse per gli stati di iterazione da un'esecuzione all'altra.
Return
Return
è rappresentato come un campo degli oggetti. MockedResponse
Specifica il risultato positivo di uno stato Task simulato.
Di seguito è riportato un esempio di Return
oggetto che contiene una risposta simulata per la chiamata Invoke
a una funzione Lambda:
"Return": {
"StatusCode": 200,
"Payload": {
"StatusCode": 200,
"body": "Hello from Lambda!"
}
}
Lancia
Throw
è rappresentato come un campo degli MockedResponse
oggetti. Specifica l'output di errore di un'operazione non riuscita. Il valore di Throw
deve essere un oggetto contenente un Error
e Cause
campi con valori di stringa. Inoltre, il valore di stringa specificato nel Error
campo in MockConfigFile.json
deve corrispondere agli errori gestiti nelle Catch
sezioni Retry
e della macchina a stati.
Di seguito è riportato un esempio di Throw
oggetto che contiene una risposta simulata per la chiamata Invoke
a una funzione Lambda:
"Throw": {
"Error": "Lambda.TimeoutException",
"Cause": "Lambda timed out."
}