Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Archivo de configuración para integraciones de servicios simuladas en Step Functions
Para usar integraciones de servicios simuladas, primero debe crear un archivo de configuración simulado denominado MockConfigFile.json
que contenga las configuraciones simuladas. A continuación, proporcione a Step Functions Local el archivo de configuración simulado. Este archivo de configuración define los casos de prueba, que contienen estados simulados que utilizan respuestas de integración de servicios simuladas. La siguiente sección contiene información sobre la estructura de la configuración simulada, que incluye los estados simulados y las respuestas simuladas:
Estructura simulada de archivos de configuración
Una configuración simulada es un JSON objeto que contiene los siguientes campos de nivel superior:
-
StateMachines
: los campos de este objeto representan máquinas de estado configuradas para utilizar integraciones de servicios simuladas. -
MockedResponse
: los campos de este objeto representan respuestas simuladas para las llamadas de integración de servicios.
A continuación se muestra un ejemplo de un archivo de configuración simulado que incluye una definición StateMachine
y 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!"
}
}
}
}
}
}
Referencia de campo de configuración simulada
En las siguientes secciones se explican los campos de objetos de nivel superior que debe definir en la configuración simulada.
StateMachines
El objeto StateMachines
define qué máquinas de estado utilizarán integraciones de servicios simuladas. La configuración de cada máquina de estado se representa como un campo de nivel superior de StateMachines
. El nombre del campo es el nombre de la máquina de estado y el valor es un objeto que contiene un único campo denominado TestCases
, cuyos campos representan casos de prueba de esa máquina de estado.
La siguiente sintaxis muestra una máquina de estado con dos casos de prueba:
"MyStateMachine": {
"TestCases": {
"HappyPath": {
...
},
"SadPath": {
...
}
}
TestCases
Los campos de TestCases
representan casos de prueba individuales para la máquina de estado. El nombre de cada caso de prueba debe ser único para cada máquina de estado y el valor de cada caso de prueba es un objeto que especifica una respuesta simulada para utilizarla en los estados Task de la máquina de estado.
El siguiente ejemplo de TestCase
vincula dos estados Task
a dos MockedResponses
:
"HappyPath": {
"SomeTaskState": "SomeMockedResponse",
"AnotherTaskState": "AnotherMockedResponse"
}
MockedResponses
MockedResponses
es un objeto que contiene varios objetos de respuesta simulados con nombres de campo únicos. Un objeto de respuesta simulado define el resultado correcto o la salida con error de cada invocación de un estado Task simulado. El número de invocación se especifica mediante cadenas de números enteros individuales, como «0», «1», «2» y «3», o un rango inclusivo de números enteros, como «0-1», «2-3».
Cuando se simula una tarea, se debe especificar una respuesta simulada para cada invocación. La respuesta debe contener un único campo denominado Return
o Throw
cuyo valor sea el resultado o error de la invocación de la tarea simulada. Si no especifica una respuesta simulada, la ejecución de la máquina de estado generará un error.
A continuación se muestra un ejemplo de una MockedResponse
con Throw
y Return
objetos. En este ejemplo, las tres primeras veces que se ejecuta la máquina de estado, se devuelve la respuesta especificada en "0-2"
, y la cuarta vez que se ejecuta la máquina de estado, se devuelve la respuesta especificada en "3"
.
"SomeMockedResponse": {
"0-2": {
"Throw": {
...
}
},
"3": {
"Return": {
...
}
}
}
nota
Si utiliza un estado Map
y quiere garantizar respuestas predecibles para el estado Map
, defina el valor de maxConcurrency
en 1. Si establece un valor superior a 1, Step Functions Local ejecutará varias iteraciones simultáneamente, lo que provocará que el orden general de ejecución de los estados de las iteraciones sea impredecible. Además, esto puede provocar que Step Functions Local utilice diferentes respuestas simuladas para los estados de iteración de una ejecución a la siguiente.
Return
Return
se representa como un campo de los objetos MockedResponse
. Especifica el resultado correcto de un estado Task simulado.
A continuación se muestra un ejemplo de un objeto Return
que contiene una respuesta simulada para llamar a Invoke
en una función de Lambda:
"Return": {
"StatusCode": 200,
"Payload": {
"StatusCode": 200,
"body": "Hello from Lambda!"
}
}
Throw
Throw
se representa como un campo de los objetos MockedResponse
. Especifica la salida de error de una tarea fallida. El valor de Throw
debe ser un objeto que contenga campos Error
y Cause
con valores de cadena. Además, el valor de cadena que especifique en el campo Error
en MockConfigFile.json
debe coincidir con los errores gestionados en las secciones Retry
y Catch
de su máquina de estado.
A continuación se muestra un ejemplo de un objeto Throw
que contiene una respuesta simulada para llamar a Invoke
en una función de Lambda:
"Throw": {
"Error": "Lambda.TimeoutException",
"Cause": "Lambda timed out."
}