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.
Mapeo
El estado Map
("Type": "Map"
) permite ejecutar un conjunto de pasos para cada elemento de una matriz de entrada. Aunque el estado Parallel
ejecuta varias ramificaciones de pasos utilizando la misma entrada, un estado Map
ejecutará los mismos pasos para varias entradas de una matriz en la entrada de estado.
Para obtener una introducción al uso del estado Map
, consulte el Tutorial sobre el estado Map.
Además de los campos de estado comunes, los estados Map
incluyen los campos adicionales que se detallan a continuación.
-
Iterator
(Obligatorio) -
El valor del campo
Iterator
es un objeto que define una máquina de estado que procesará cada elemento de la matriz. -
ItemsPath
(opcional) -
El valor del campo
ItemsPath
es una ruta de referencia que identifica en qué parte de la entrada efectiva se encuentra el campo de la matriz. Para obtener más información, consulte ItemsPath.Los estados de un campo
Iterator
solo pasar de uno a otro y ningún estado ajeno al campoIterator
puede pasar a un estado dentro de él.Si se produce un error en una iteración, se produce un error en todo el estado Map y se terminan todas las iteraciones.
-
MaxConcurrency
(opcional) -
El valor del campo
MaxConcurrency
es un número entero que proporciona el límite superior respecto al número de invocaciones del iterador que se pueden ejecutar en paralelo. Por ejemplo, un valor deMaxConcurrency
de 10 limitará el estadoMap
a 10 iteraciones que se ejecutan simultáneamente.nota Las iteraciones simultáneas pueden estar limitadas. Cuando esto ocurra, algunas iteraciones no comenzarán hasta que se hayan completado las iteraciones anteriores. La probabilidad de que esto ocurra aumenta cuando la matriz de entrada tiene más de 40 elementos.
Para lograr un mayor número de concurrencia, considere la posibilidad de utilizar máquinas de estado anidadas en cascada
Map
estados. Por ejemplo, para lograr una concurrencia de 1024, podría crear una máquina de estado que contenga unMap
estado que itera 32 veces, luego anida esa máquina de estado en elMap
estado de una máquina de estado de nivel superior que se repite 32 veces.El valor predeterminado es
0
, que no establece ninguna cuota respecto al paralelismo y las iteraciones se invocan de la forma más simultánea posible.Un valor de
MaxConcurrency
de1
invoca aIterator
una vez por cada elemento de la matriz en el orden de aparición en la entrada; no comenzará una nueva iteración hasta que se haya completado la anterior. -
ResultPath
(opcional) -
Especifica en qué lugar (de los datos de entrada) se va a situar la salida de las ramificaciones. La entrada se filtra según el contenido del campo
OutputPath
(si existe) antes de utilizarla como salida del estado. Para obtener más información, consulte Procesamiento de entrada y salida. -
ResultSelector
(opcional) -
Pase una colección de pares de valores clave, donde los valores son estáticos o están seleccionados del resultado. Para obtener más información, consulte Selector de resultados.
-
Retry
(opcional) -
Una matriz de objetos, llamados "reintentadores", que definen una política de reintentos en caso de que el estado encuentre errores en tiempo de ejecución. Para obtener más información, consulte Ejemplos de uso de reintento y uso de captura.
nota Si define Retriers para el
Map
, la política de reintentos se aplica a todos losMap
iteraciones de estado en lugar de solo las iteraciones fallidas. Por ejemplo, si suMap
state contiene tres iteraciones de las cuales una falla y ha definido elRetry
para laMap
, la política de reintentos se aplica a todos losMap
iteraciones de estado en lugar de solo la iteración fallida. -
Catch
(opcional) -
Una matriz de objetos, denominados "receptores", que definen un estado alternativo que se ejecuta si el estado encuentra errores en tiempo de ejecución y su política de reintentos está agotada o no se ha definido. Para obtener más información, consulte Estados alternativos.
Ejemplo del estado Map
Tenga en cuenta los siguientes datos de entrada para un estado Map
.
{
"ship-date": "2016-03-14T01:59:00Z",
"detail": {
"delivery-partner": "UQS",
"shipped": [
{ "prod": "R31", "dest-code": 9511, "quantity": 1344 },
{ "prod": "S39", "dest-code": 9511, "quantity": 40 },
{ "prod": "R31", "dest-code": 9833, "quantity": 12 },
{ "prod": "R40", "dest-code": 9860, "quantity": 887 },
{ "prod": "R40", "dest-code": 9511, "quantity": 1220 }
]
}
}
Dada la entrada anterior, el estado Map
del siguiente ejemplo invocará una función de AWS Lambda (ship-val
) una vez por cada elemento de la matriz en el campo shipped
.
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"Iterator": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
}
}
},
"ResultPath": "$.detail.shipped",
"End": true
}
Cada iteración delMap
state enviará un elemento de la matriz (seleccionado con laItemsPath) como entrada para la función Lambda. Por ejemplo, la entrada para una invocación de Lambda sería la siguiente.
{
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
}
Una vez finalizado, la salida delMap
state es una matriz JSON en la que cada elemento es la salida de una iteración (en este caso, la salida de laship-val
Una función Lambda).
Ejemplo del estado Map con parámetros
Supongamos que elship-val
La función Lambda del ejemplo anterior también necesita información sobre el transportista del envío, así como los elementos de la matriz para cada iteración. Puede incluir información de la entrada, junto con información específica de la iteración actual del estado Map. Observe el campo Parameters
del siguiente ejemplo.
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"ResultPath": "$.detail.shipped",
"Parameters": {
"parcel.$": "$$.Map.Item.Value",
"courier.$": "$.delivery-partner"
},
"Iterator": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
}
}
},
"End": true
}
El bloque Parameters
sustituye la entrada para las iteraciones por un nodo JSON que contiene tanto los datos del elemento actual del objeto context, como la información del transportista del campo delivery-partner
de la entrada del estado Map
. A continuación se muestra un ejemplo de entrada para una única iteración, que se transfiere a una invocación de laship-val
Una función Lambda.
{
"parcel": {
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
},
"courier": "UQS"
}
En los anterioresMap
ejemplo de estado, elResultPathproduce salida igual que la entrada, pero con eldetail.shipped
campo sobrescrito por una matriz en la que cada elemento es la salida delship-val
Función lambda para cada iteración.
Para obtener más información, consulte los siguientes temas.
Procesamiento de entrada y salida del estado Map
Para un estado Map, InputPath funciona igual que para los demás tipos de estados, es decir, selecciona un subconjunto de la entrada.
La entrada de un estado Map
debe incluir una matriz JSON y ejecutará la sección Iterator
una vez por cada elemento de la matriz. Especifique en qué ubicación de la entrada se encuentra esta matriz mediante el campo ItemsPath. Si no se especifica, el valor de ItemsPath
es $
y la sección Iterator
espera que la matriz sea la única entrada. Un estado Map
también puede incluir un campo ItemsPath, cuyo valor debe ser una ruta de referencia. El campo ItemsPath
selecciona en qué lugar de la entrada se encuentra la matriz que se va a utilizar para las iteraciones. La ruta de referencia se aplica a la entrada efectiva (después de aplicar InputPath
) y debe identificar un campo cuyo valor sea una matriz JSON.
La entrada de cada iteración, de forma predeterminada, es un único elemento del campo de matriz identificado por el valor ItemsPath
. Esto puede anularse mediante el campo Parameters
.
Una vez completada, la salida del estado Map
es una matriz JSON en la que cada elemento es la salida de una iteración.
Para obtener más información, consulte los siguientes temas.