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à.
Utilizzo dello stato della mappa in modalità Inline nei flussi di lavoro Step Functions
Per impostazione predefinita, Map
gli stati vengono eseguiti in modalità Inline. In modalità Inline, lo stato della mappa accetta solo un JSON array come input. Riceve questo array da una fase precedente del flusso di lavoro. In questa modalità, ogni iterazione dello Map
stato viene eseguita nel contesto del flusso di lavoro che contiene lo Map
stato. Step Functions aggiunge la cronologia di esecuzione di queste iterazioni alla cronologia di esecuzione del flusso di lavoro principale.
In questa modalità, lo Map
stato supporta fino a 40 iterazioni simultanee.
Uno Map
stato impostato su Inline è noto come stato Inline Map. Utilizza lo Map
stato in modalità Inline se la cronologia di esecuzione del flusso di lavoro non supera le 25.000 voci o se non sono necessarie più di 40 iterazioni simultanee.
Per un'introduzione all'uso dello stato della mappa in linea, consulta il tutorial. Ripeti le azioni con Inline Map
Indice
Concetti chiave in questo argomento
- Modalità in linea
-
Una modalità di concorrenza limitata dello stato.
Map
In questa modalità, ogni iterazione delloMap
stato viene eseguita nel contesto del flusso di lavoro che contiene lo stato.Map
Step Functions aggiunge la cronologia di esecuzione di queste iterazioni alla cronologia di esecuzione del flusso di lavoro principale.Map
gli stati vengono eseguiti in modalità Inline per impostazione predefinita.Questa modalità accetta solo un JSON array come input e supporta fino a 40 iterazioni simultanee.
- Stato della mappa in linea
-
Uno
Map
stato impostato sulla modalità Inline. - Mappa il flusso di lavoro
L'insieme di passaggi eseguiti dallo
Map
stato per ogni iterazione.- Iterazione dello stato della mappa
-
Una ripetizione del flusso di lavoro definito all'interno dello
Map
stato.
Campi di stato della mappa in linea
Per utilizzare lo stato Inline Map nei flussi di lavoro, specifica uno o più di questi campi. Specificate questi campi oltre ai campi di stato comuni.
Type
(Obbligatorio)-
Imposta il tipo di stato, ad esempio
Map
. ItemProcessor
(Obbligatorio)-
Contiene i seguenti JSON oggetti che specificano la modalità e la definizione di elaborazione
Map
dello stato.La definizione contiene l'insieme di passaggi da ripetere per l'elaborazione di ogni elemento dell'array.
-
ProcessorConfig
— Un JSON oggetto opzionale che specifica la modalità di elaborazione delloMap
stato. Questo oggetto contiene ilMode
sottocampo. Il valore predefinito di questo campo èINLINE
, che utilizzaMap
lo stato in modalità Inline.In questa modalità, l'errore di qualsiasi iterazione causa il fallimento dello
Map
stato. Tutte le iterazioni si interrompono quando loMap
stato fallisce.
StartAt
— specifica una stringa che indica il primo stato di un flusso di lavoro. Questa stringa fa distinzione tra maiuscole e minuscole e deve corrispondere al nome di uno degli oggetti di stato. Questo stato viene eseguito per primo per ogni elemento del set di dati. Qualsiasi input di esecuzione fornito alloMap
stato passa per primo alloStartAt
stato.-
States
— Un JSON oggetto contenente un set di stati delimitato da virgole. In questo oggetto, si definisce il. Map workflowNota
-
Gli stati all'interno del
ItemProcessor
campo possono solo passare l'uno dall'altro. Nessuno stato esterno alItemProcessor
campo può passare a uno stato al suo interno. -
Il
ItemProcessor
campo sostituisce il campo ora obsoletoIterator
. Sebbene sia possibile continuare a includereMap
gli stati che utilizzano ilIterator
campo, si consiglia vivamente di sostituirlo con.ItemProcessor
Step Functions Local attualmente non supporta il
ItemProcessor
campo. Ti consigliamo di utilizzare ilIterator
campo con Step Functions Local.
-
-
ItemsPath
(facoltativo).-
Specificate un percorso di riferimento utilizzando la JsonPath
sintassi. Questo percorso seleziona il JSON nodo che contiene l'array di elementi all'interno dell'input di stato. Per ulteriori informazioni, consulta ItemsPath (Mappa). ItemSelector
(facoltativo).-
Sostituisce i valori degli elementi dell'array di input prima che vengano passati a ciascuna
Map
iterazione di stato.In questo campo, si specifica un valore valido JSON che contiene una raccolta di coppie chiave-valore. Queste coppie possono contenere uno dei seguenti elementi:
-
Valori statici definiti nella definizione della macchina a stati.
-
Valori selezionati dall'input dello stato utilizzando un percorso.
-
Valori a cui si accede dall'oggetto contestuale.
Per ulteriori informazioni, consulta ItemSelector (Mappa).
Il
ItemSelector
campo sostituisce il campo ora obsoletoParameters
. Sebbene sia possibile continuare a includereMap
gli stati che utilizzano ilParameters
campo, si consiglia vivamente di sostituirlo con.ItemSelector
-
MaxConcurrency
(facoltativo).-
Specifica un valore intero che fornisce il limite superiore del numero di iterazioni di
Map
stato che possono essere eseguite in parallelo. Ad esempio, unMaxConcurrency
valore pari a 10 limita loMap
stato a 10 iterazioni simultanee eseguite contemporaneamente.Nota
Le iterazioni simultanee possono essere limitate. Quando ciò si verifica, alcune iterazioni non inizieranno fino al completamento delle iterazioni precedenti. La probabilità che ciò si verifichi aumenta quando l'array di input contiene più di 40 elementi.
Per ottenere una maggiore concorrenza, considera. Modalità distribuita
Il valore predefinito è
0
, che non pone limiti alla concorrenza. Step Functions richiama le iterazioni il più simultaneamente possibile.MaxConcurrency
Il valore di1
invoca una volta per ogni elemento dell'ItemProcessor
array. Gli elementi dell'array vengono elaborati nell'ordine in cui appaiono nell'input. Step Functions non avvia una nuova iterazione finché non completa l'iterazione precedente. MaxConcurrencyPath
(facoltativo).-
Se desideri fornire un valore di concorrenza massimo in modo dinamico dall'input dello stato utilizzando un percorso di riferimento, usa.
MaxConcurrencyPath
Una volta risolto, il percorso di riferimento deve selezionare un campo il cui valore è un numero intero non negativo.Nota
Uno
Map
stato non può includere entrambiMaxConcurrency
e.MaxConcurrencyPath
ResultPath
(facoltativo).-
Speciifica dove, nell'input, deve essere memorizzato l'output delle iterazioni dello
Map
stato. Lo stato Mappa filtra quindi l'input come specificato dal OutputPathcampo, se specificato. Quindi, utilizza l'input filtrato come output dello stato. Per ulteriori informazioni, consultare Elaborazione di input e output. ResultSelector
(facoltativo).-
Passa una raccolta di coppie chiave-valore, in cui i valori sono statici o selezionati dal risultato. Per ulteriori informazioni, consulta ResultSelector.
Suggerimento
Se lo stato Parallel o Map che usi nelle tue macchine a stati restituisce un array di array, puoi trasformarli in un array flat con il ResultSelector campo. Per ulteriori informazioni, consulta Appiattimento di una serie di array.
Retry
(facoltativo).-
Una serie di oggetti, denominati Retriers, che definiscono una politica di nuovi tentativi. Gli stati utilizzano una politica di nuovo tentativo quando riscontrano errori di runtime. Per ulteriori informazioni, consulta Esempi di macchine a stati che utilizzano Retry e Catch.
Nota
Se definisci Retriers per lo stato Inline Map, la politica di riprova si applica a tutte le iterazioni di
Map
stato, anziché solo alle iterazioni fallite. Ad esempio,Map
lo stato contiene due iterazioni riuscite e un'iterazione fallita. Se avete definito ilRetry
campo perMap
lo stato, la politica di riprova si applica a tutte e tre le iterazioni diMap
stato anziché solo all'iterazione fallita. Catch
(facoltativo).-
Un array di oggetti, denominati catcher, che definiscono uno stato di fallback. Gli stati eseguono un catcher se riscontrano errori di runtime e non dispongono di una politica di ripetizione dei tentativi oppure la politica di ripetizione dei tentativi è esaurita. Per ulteriori informazioni, consulta Stati di fallback.
Campi obsoleti
Nota
Sebbene sia possibile continuare a includere Map
gli stati che utilizzano i seguenti campi, si consiglia vivamente di sostituirli Iterator
con e conItemProcessor
. Parameters
ItemSelector
-
Iterator
-
Specifica un JSON oggetto che definisce una serie di passaggi che elaborano ogni elemento dell'array.
Parameters
-
Specifica una raccolta di coppie chiave-valore, in cui i valori possono contenere uno dei seguenti elementi:
-
Valori statici definiti nella definizione della macchina a stati.
-
Valori selezionati dall'input utilizzando un percorso.
-
Esempio di stato della mappa in linea
Considerate i seguenti dati di input per uno Map
stato in esecuzione in modalità Inline.
{
"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 }
]
}
}
Dato l'input precedente, lo Map
stato nell'esempio seguente richiama un AWS Lambda funzione denominata ship-val
una volta per ogni elemento dell'array nel 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"
}
Ogni iterazione dello Map
stato invia un elemento dell'array, selezionato con il ItemsPathcampo, come input per la funzione ship-val
Lambda. I seguenti valori sono un esempio di input che lo Map
stato invia a una chiamata della funzione Lambda:
{
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
}
Una volta completato, l'output dello Map
stato è un JSON array, in cui ogni elemento è l'output di un'iterazione. In questo caso, questo array contiene l'output della funzione ship-val
Lambda.
Esempio di stato della mappa in linea con ItemSelector
Supponiamo che la funzione ship-val
Lambda dell'esempio precedente richieda anche informazioni sul corriere della spedizione. Queste informazioni si aggiungono agli elementi dell'array per ogni iterazione. È possibile includere informazioni provenienti dall'input, insieme a informazioni specifiche sull'iterazione corrente dello Map
stato. Notate il ItemSelector
campo nell'esempio seguente:
"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
}
Il ItemSelector
blocco sostituisce l'input delle iterazioni con un JSON nodo. Questo nodo contiene sia i dati dell'articolo corrente provenienti dall'oggetto contestuale sia le informazioni sul corriere dal campo dello Map
state input. delivery-partner
Di seguito è riportato un esempio di input per una singola iterazione. Lo Map
stato passa questo input a una chiamata della funzione Lambdaship-val
.
{
"parcel": {
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
},
"courier": "UQS"
}
Nel precedente esempio di stato Inline Map, il ResultPath
campo produce un output nello stesso formato dell'input. Tuttavia, sovrascrive il detail.shipped
campo con un array in cui ogni elemento è l'output della chiamata Lambda ship-val
di ogni iterazione.
Per ulteriori informazioni sull'utilizzo dello stato dello stato della mappa inline e dei relativi campi, consulta quanto segue.
Elaborazione di input e Map
output in stato di linea
Per un determinato Map
stato, InputPathseleziona un sottoinsieme dell'input dello stato.
L'input di uno Map
stato deve includere un JSON array. Lo Map
stato esegue la ItemProcessor
sezione una volta per ogni elemento dell'array. Se si specifica il ItemsPathcampo, Map
lo stato seleziona la posizione dell'input per trovare l'array su cui eseguire l'iterazione. Se non è specificato, il valore di ItemsPath
è $
e la sezione ItemProcessor
prevede che l'array sia l'unico input. Se specificate il ItemsPath
campo, il suo valore deve essere un percorso di riferimento. Lo Map
stato applica questo percorso all'input effettivo dopo aver applicato ilInputPath
. ItemsPath
Devono identificare un campo il cui valore è un JSON array.
L'input di ogni iterazione, per impostazione predefinita, è un singolo elemento del campo dell'array identificato dal ItemsPath
valore. È possibile sovrascrivere questo valore con il ItemSelector (Mappa)
campo.
Al termine, l'output dello Map
stato è un JSON array, in cui ogni elemento è l'output di un'iterazione.
Per ulteriori informazioni sugli input e gli output dello stato di Inline Map, consulta quanto segue: