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.
Uso del estado del mapa en modo en línea en los flujos de trabajo de Step Functions
De forma predeterminada, los estados Map
se ejecutan en modo En línea. En el modo en línea, el estado del mapa solo acepta una JSON matriz como entrada. Recibe esta matriz de un paso anterior del flujo de trabajo. En este modo, cada iteración del estado Map
se ejecuta en el contexto del flujo de trabajo que contiene el estado Map
. Step Functions añade el historial de ejecución de estas iteraciones al historial de ejecución del flujo de trabajo principal.
En este modo, el estado Map
admite hasta 40 iteraciones simultáneas.
Un estado Map
configurado como en línea se conoce como estado Map en línea. Utilice el estado Map
en modo En línea si el historial de ejecución del flujo de trabajo no va a superar las 25 000 entradas o si no necesita más de 40 iteraciones simultáneas.
Para ver una introducción al uso del estado Map en línea, consulte el tutorial Repite las acciones con Inline Map.
Contenido
Conceptos clave de este tema
- Modo En línea
-
Un modo de simultaneidad limitada del estado
Map
. En este modo, cada iteración del estadoMap
se ejecuta en el contexto del flujo de trabajo que contiene el estadoMap
. Step Functions añade el historial de ejecución de estas iteraciones al historial de ejecución del flujo de trabajo principal. Los estadosMap
se ejecutan de manera predeterminada en el modo En línea.Este modo solo acepta una JSON matriz como entrada y admite hasta 40 iteraciones simultáneas.
- Estado Map en línea
-
Un estado
Map
configurado en el modo En línea. - Flujo de trabajo de Map
El conjunto de pasos que ejecuta el estado
Map
para cada iteración.- Iteración del estado Map
-
Una repetición del flujo de trabajo definido dentro del estado
Map
.
Campos del estado Map en línea
Para usar el estado Map en línea en los flujos de trabajo, especifique uno o más de estos campos. Estos campos se especifican además de los campos de estado comunes.
Type
(Obligatorio)-
Establece el tipo de estado, por ejemplo
Map
. ItemProcessor
(Obligatorio)-
Contiene los siguientes JSON objetos que especifican el
Map
estado, el modo de procesamiento y la definición.La definición contiene el conjunto de pasos que se deben repetir para procesar cada elemento de la matriz.
-
ProcessorConfig
— Un JSON objeto opcional que especifica el modo de procesamiento delMap
estado. Este objeto contiene el subcampoMode
. El valor predeterminado de este campo esINLINE
, que usa el estadoMap
en el modo En línea.En este modo, si se produce un error en cualquier iteración, se produce un error en el estado
Map
. Todas las iteraciones se detienen cuando el estadoMap
produce un error.
StartAt
: especifica una cadena que indica el primer estado de un flujo de trabajo. Esta cadena debe coincidir exactamente (mayúsculas y minúsculas) con el nombre de uno de los objetos de estado. Este estado se ejecuta primero para cada elemento del conjunto de datos. Cualquier entrada de ejecución que se proporcione al estadoMap
pasará primero al estadoStartAt
.-
States
— Un JSON objeto que contiene un conjunto de estados delimitados por comas. En este objeto, se define el Map workflow.nota
-
Los estados del campo
ItemProcessor
solo pueden hacer la transición entre sí. Ningún estado fuera del campoItemProcessor
puede pasar a un estado dentro de él. -
El campo
ItemProcessor
reemplaza al campoIterator
, ahora obsoleto. Aunque puede seguir incluyendo estadosMap
que usen el campoIterator
, le recomendamos encarecidamente que sustituya este campo porItemProcessor
.Actualmente, Step Functions Local no es compatible con el campo
ItemProcessor
. Le recomendamos que utilice el campoIterator
con Step Functions Local.
-
-
ItemsPath
(opcional)-
Especifica una ruta de referencia mediante la sintaxis. JsonPath
Esta ruta selecciona el JSON nodo que contiene la matriz de elementos dentro de la entrada de estado. Para obtener más información, consulte ItemsPath (Mapa). ItemSelector
(opcional)-
Anula los valores de los elementos de la matriz de entrada antes de pasarlos a cada iteración del estado
Map
.En este campo, se especifica un valor válido JSON que contiene una colección de pares clave-valor. Estos pares pueden contener lo siguiente:
-
Valores estáticos se definen en la definición de la máquina de estado.
-
Los valores se seleccionan de la entrada de estado mediante una ruta.
-
Valores a los que se accede desde el objeto de contexto.
Para obtener más información, consulte ItemSelector (Mapa).
El campo
ItemSelector
reemplaza al campoParameters
, ahora obsoleto. Aunque puede seguir incluyendo estadosMap
que usen el campoParameters
, le recomendamos encarecidamente que sustituya este campo porItemSelector
. -
MaxConcurrency
(opcional)-
Especifica un valor entero que proporciona el límite superior del número de iteraciones del estado
Map
que se pueden ejecutar en paralelo. Por ejemplo, un valor deMaxConcurrency
de 10 limitará el estadoMap
a 10 iteraciones que se ejecuten simultáneamente.nota
Las iteraciones simultáneas pueden estar limitadas. Cuando ocurra esto, algunas iteraciones no comenzarán hasta que se completen las anteriores. La probabilidad de que esto ocurra aumenta cuando la matriz de entrada tiene más de 40 elementos.
Para lograr una mayor simultaneidad, considere Modo distribuido.
El valor predeterminado es
0
, que no limita la simultaneidad. Step Functions invoca las iteraciones de la forma más simultánea posible.Un valor de
MaxConcurrency
de1
invoca aItemProcessor
una vez para cada elemento de la matriz. Los elementos de la matriz se procesan en el orden en que aparecen en la entrada. Step Functions no inicia una nueva iteración hasta que se completa la iteración anterior. MaxConcurrencyPath
(opcional)-
Si desea proporcionar un valor máximo de simultaneidad de forma dinámica a partir de la entrada de estado mediante una ruta de referencia, utilice
MaxConcurrencyPath
. Una vez resuelta, la ruta de referencia debe seleccionar un campo cuyo valor sea un entero no negativo.nota
Un estado
Map
no puede incluir tantoMaxConcurrency
comoMaxConcurrencyPath
. ResultPath
(opcional)-
Especifica en qué parte de la entrada se va a almacenar la salida de las iteraciones del estado
Map
. A continuación, el estado Map filtra la entrada según lo especificado por el campo OutputPath, si se especifica. A continuación, utiliza la entrada filtrada como salida del estado. Para obtener más información, consulte Procesamiento de entrada y salida. ResultSelector
(opcional)-
Pase una colección de pares clave-valor, donde los valores sean estáticos o se seleccionen del resultado. Para obtener más información, consulte ResultSelector.
sugerencia
Si el estado Parallel o Map que utiliza en sus máquinas de estado devuelve una matriz de matrices, puede transformarlas en una matriz plana con el campo ResultSelector. Para obtener más información, consulte Aplanamiento de una matriz de matrices.
Retry
(opcional)-
Una matriz de objetos, denominados "reintentadores", que definen una política de reintentos. Los estados utilizan una política de reintentos cuando encuentran errores en tiempo de ejecución. Para obtener más información, consulte Ejemplos de máquina de estado que usan Retry y Catch.
nota
Si define "reintentadores" para el estado Map en línea, la política de reintentos se aplicará a todas las iteraciones del estado
Map
y no solo a las iteraciones con errores. Por ejemplo, el estadoMap
contiene dos iteraciones correctas y una iteración con error. Si ha definido elRetry
campo para elMap
estado, la política de reintentos se aplica a las tres iteraciones deMap
estado y no solo a la iteración fallida. Catch
(opcional)-
Una matriz de objetos, denominados "receptores", que definen un estado alternativo. Los estados ejecutan un receptor si encuentran errores en tiempo de ejecución y no tienen una política de reintentos o si su política de reintentos está agotada. Para obtener más información, consulte Estados alternativos.
Campos obsoletos
nota
Aunque puede seguir incluyendo estados Map
que usen los siguientes campos, le recomendamos encarecidamente que sustituya Iterator
por ItemProcessor
y Parameters
por ItemSelector
.
-
Iterator
-
Especifica un JSON objeto que define un conjunto de pasos que procesan cada elemento de la matriz.
Parameters
-
Especifica una colección de pares clave-valor, donde los valores pueden contener lo siguientes:
-
Valores estáticos se definen en la definición de la máquina de estado.
-
Valores seleccionados de la entrada mediante una ruta.
-
Ejemplo de estado Map en línea
Tenga en cuenta los siguientes datos de entrada para un estado Map
que se ejecute en modo En línea.
{
"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 Map
estado del siguiente ejemplo invoca un AWS Lambda función nombrada ship-val
una vez para cada elemento de la matriz del shipped
campo.
"Validate All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "INLINE"
},
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:ship-val:$LATEST
"
},
"End": true
}
}
},
"End": true,
"ResultPath": "$.detail.shipped",
"ItemsPath": "$.shipped"
}
Cada iteración del estado Map
enviará un elemento de la matriz. seleccionado mediante el campo ItemsPath, como entrada para la función de Lambda ship-val
. Los siguientes valores son un ejemplo de la entrada que el estado Map
envía a una invocación de la función de Lambda:
{
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
}
Cuando se completa, la salida del Map
estado es una JSON matriz, donde cada elemento es la salida de una iteración. En este caso, esta matriz contiene la salida de la función de Lambda ship-val
.
Ejemplo de estado Map en línea con ItemSelector
Supongamos que la función de Lambda ship-val
del ejemplo anterior también necesita información sobre el transportista del envío. Esta información se añade a 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 ItemSelector
del siguiente ejemplo:
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"ResultPath": "$.detail.shipped",
"ItemSelector": {
"parcel.$": "$$.Map.Item.Value",
"courier.$": "$.delivery-partner"
},
"ItemProcessor": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
}
}
},
"End": true
}
El ItemSelector
bloque reemplaza la entrada a las iteraciones por un JSON nodo. Este nodo contiene tanto los datos del elemento actual del objeto de contexto como la información del transportista mensajería del campo delivery-partner
de la entrada del estado Map
. A continuación, se muestra un ejemplo de entrada en una sola iteración. El estado Map
pasa esta entrada a una invocación de la función de Lambda ship-val
.
{
"parcel": {
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
},
"courier": "UQS"
}
En el ejemplo anterior del estado Map en línea, el campo ResultPath
produce una salida en el mismo formato que la entrada. No obstante, sobrescribe el campo detail.shipped
con una matriz en la que cada elemento es la salida de la invocación de Lambda ship-val
de cada iteración.
Para obtener más información sobre el uso del estado Map en línea y sus campos, consulte lo siguiente.
Procesamiento de entrada y salida del estado Map
en línea
Para un estado Map
determinado, InputPath selecciona un subconjunto de la entrada del estado.
La entrada de un Map
estado debe incluir una JSON matriz. El estado Map
ejecuta la sección ItemProcessor
una vez para cada elemento de la matriz. Si especifica el campo ItemsPath, el estado Map
selecciona en qué parte de la entrada se busca la matriz sobre la que se va a iterar. Si no se especifica, el valor de ItemsPath
es $
y la sección ItemProcessor
espera que la matriz sea la única entrada. Si especifica el campo ItemsPath
, su valor debe ser una ruta de referencia. El estado Map
aplica esta ruta a la entrada efectiva después de aplicar la InputPath
. ItemsPath
Debe identificar un campo cuyo valor sea una JSON matriz.
La entrada de cada iteración, de forma predeterminada, es un único elemento del campo de matriz identificado por el valor ItemsPath
. Puede anular este valor con el campo ItemSelector (Mapa)
.
Cuando se completa, la salida del Map
estado es una JSON matriz, donde cada elemento es la salida de una iteración.
Para obtener más información acerca de las entradas y salidas del estado Map en línea, consulte lo siguiente: