Utilizzo dello stato della mappa in modalità Inline nei flussi di lavoro Step Functions - AWS Step Functions

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 un'azione utilizzando lo stato Inline Map

Concetti chiave in questo argomento

Modalità in linea

Una modalità di concorrenza limitata dello stato. Map In questa modalità, ogni iterazione dello Map 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. Mapgli 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 esempioMap.

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 dello Map stato. Questo oggetto contiene il Mode sottocampo. Il valore predefinito di questo campo èINLINE, che utilizza Map 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 lo Map 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 allo Map stato passa per primo allo StartAt stato.

  • States— Un JSON oggetto contenente un set di stati delimitato da virgole. In questo oggetto, si definisce il. Map workflow

    Nota
    • Gli stati all'interno del ItemProcessor campo possono solo passare l'uno dall'altro. Nessuno stato esterno al ItemProcessor campo può passare a uno stato al suo interno.

    • Il ItemProcessor campo sostituisce il campo ora obsoletoIterator. Sebbene sia possibile continuare a includere Map gli stati che utilizzano il Iterator campo, si consiglia vivamente di sostituirlo con. ItemProcessor

      Step Functions Local attualmente non supporta il ItemProcessor campo. Ti consigliamo di utilizzare il Iterator campo con Step Functions Local.

ItemsPath (facoltativo).

Specificate un percorso di riferimento utilizzando la JsonPathsintassi. 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 includere Map gli stati che utilizzano il Parameters 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, un MaxConcurrency valore pari a 10 limita lo Map 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.

MaxConcurrencyIl valore di 1 invoca una volta per ogni elemento dell'ItemProcessorarray. 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 entrambi MaxConcurrency 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 hai definito il Retry campo per Map lo stato, la politica di riprova si applica a tutte e tre le iterazioni di Map 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 stati che utilizzano i seguenti campi, consigliamo vivamente di sostituirli Iterator con e conItemProcessor. Parameters ItemSelector

Iterator

Speciifica 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 dell'esempio seguente richiama una AWS Lambda funzione denominata ship-val una volta per ogni elemento dell'array nel campo. shipped

"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 }

Al termine, 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 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. ItemsPathDevono 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: