Utilizzo dello stato della mappa in modalità distribuita per orchestrare carichi di lavoro paralleli su larga scala - 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à distribuita per orchestrare carichi di lavoro paralleli su larga scala

Con Step Functions, puoi orchestrare carichi di lavoro paralleli su larga scala per eseguire attività, come l'elaborazione su richiesta di dati semistrutturati. Questi carichi di lavoro paralleli consentono di elaborare contemporaneamente sorgenti di dati su larga scala archiviate in Amazon S3. Ad esempio, potresti elaborare un singolo file JSON o CSV che contiene grandi quantità di dati. Oppure potresti elaborare un ampio set di oggetti Amazon S3.

Per configurare un carico di lavoro parallelo su larga scala nei flussi di lavoro, includi uno Map stato in modalità Distribuita. Lo stato della mappa elabora gli elementi in un set di dati contemporaneamente. Uno Map stato impostato su Distributed è noto come stato Distributed Map. In modalità Distribuita, lo Map stato consente l'elaborazione ad alta concorrenza. In modalità distribuita, Map lo stato elabora gli elementi del set di dati in iterazioni denominate esecuzioni secondarie del flusso di lavoro. È possibile specificare il numero di esecuzioni di workflow secondarie che possono essere eseguite in parallelo. Ogni esecuzione del flusso di lavoro secondario ha una propria cronologia di esecuzione separata da quella del flusso di lavoro principale. Se non lo specifichi, Step Functions esegue 10.000 esecuzioni parallele di flussi di lavoro secondari in parallelo.

La seguente illustrazione spiega come configurare carichi di lavoro paralleli su larga scala nei flussi di lavoro.

Diagramma per illustrare il concetto di orchestrazione di carichi di lavoro paralleli su larga scala.

Termini chiave

Modalità distribuita

Una modalità di elaborazione dello stato della mappa. In questa modalità, ogni iterazione dello Map stato viene eseguita come un'esecuzione secondaria del flusso di lavoro che consente un'elevata concorrenza. Ogni esecuzione del flusso di lavoro secondario ha la propria cronologia di esecuzione, che è separata dalla cronologia di esecuzione del flusso di lavoro principale. Questa modalità supporta la lettura di input da fonti di dati Amazon S3 su larga scala.

Stato della mappa distribuita

Uno stato della mappa impostato sulla modalità di elaborazione distribuita.

Workflow della mappa

Una serie di passaggi eseguiti da uno Map stato.

Flusso di lavoro principale

Un flusso di lavoro che contiene uno o più stati della mappa distribuita.

Esecuzione del workflow secondario

Un'iterazione dello stato della mappa distribuita. L'esecuzione di un flusso di lavoro secondario ha una propria cronologia di esecuzione, che è separata dalla cronologia di esecuzione del flusso di lavoro principale.

Esegui la mappa

Quando si esegue uno Map stato in modalità Distribuita, Step Functions crea una risorsa Map Run. Un Map Run si riferisce a un insieme di esecuzioni di workflow secondarie avviate da uno stato di Distributed Map e alle impostazioni di runtime che controllano queste esecuzioni. Step Functions assegna un Amazon Resource Name (ARN) a Map Run. È possibile esaminare un Map Run nella console Step Functions. Puoi anche richiamare l'azione DescribeMapRun API. Un Map Run emette anche metriche per. CloudWatch

Per ulteriori informazioni, consulta Esame di Map Run.

Esempio di definizione dello stato di Distributed Map

Usa lo Map stato in modalità Distribuita quando devi orchestrare carichi di lavoro paralleli su larga scala che soddisfano qualsiasi combinazione delle seguenti condizioni:

  • La dimensione del set di dati supera i 256 KB.

  • La cronologia degli eventi di esecuzione del flusso di lavoro supera le 25.000 voci.

  • È necessaria una concorrenza di più di 40 iterazioni parallele.

Il seguente esempio di definizione dello stato di Distributed Map specifica il set di dati come file CSV archiviato in un bucket Amazon S3. Specifica inoltre una funzione Lambda che elabora i dati in ogni riga del file CSV. Poiché questo esempio utilizza un file CSV, specifica anche la posizione delle intestazioni delle colonne CSV. Per visualizzare la definizione completa di macchina a stati di questo esempio, consulta il tutorial Copiare dati CSV su larga scala utilizzando Distributed Map.

{ "Map": { "Type": "Map", "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "Database", "Key": "csv-dataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "LambdaTask", "States": { "LambdaTask": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:processCSVData" }, "End": true } } }, "Label": "Map", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "myOutputBucket", "Prefix": "csvProcessJobs" } } } }

Autorizzazioni per eseguire Distributed Map

Quando includi uno stato della mappa distribuita nei flussi di lavoro, Step Functions necessita delle autorizzazioni appropriate per consentire al ruolo della macchina a stati di richiamare l'azione StartExecution API per lo stato della mappa distribuita.

Il seguente esempio di policy IAM concede i privilegi minimi richiesti al ruolo della macchina a stati per l'esecuzione dello stato della mappa distribuita.

Nota

Assicurati di sostituirlo stateMachineName con il nome della macchina a stati in cui stai utilizzando lo stato Distributed Map. Ad esempio, arn:aws:states:us-east-2:123456789012:stateMachine:mystateMachine.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:region:accountID:stateMachine:stateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": "arn:aws:states:region:accountID:execution:stateMachineName:*" } ] }

Inoltre, devi assicurarti di disporre dei privilegi minimi necessari per accedere alle AWS risorse utilizzate nello stato della mappa distribuita, come i bucket Amazon S3. Per informazioni, consulta Politiche IAM per l'utilizzo dello stato della mappa distribuita.

Campi relativi allo stato della mappa distribuita

Per utilizzare lo stato della mappa distribuita nei flussi di lavoro, specifica uno o più di questi campi. È possibile specificare questi campi in aggiunta ai campi di stato comuni.

Type (Obbligatorio)

Imposta il tipo di stato, ad esempioMap.

ItemProcessor (Obbligatorio)

Contiene i seguenti oggetti JSON che specificano la modalità e la definizione di elaborazione Map dello stato.

  • ProcessorConfig— Un oggetto JSON che specifica la configurazione per lo stato. Map Questo oggetto contiene i seguenti sottocampi:

    • Mode— Impostato per DISTRIBUTED utilizzare lo Map stato in modalità Distribuita.

      Nota

      Attualmente, se si utilizza Map lo stato all'interno dei flussi di lavoro Express, non è possibile Mode impostarlo DISTRIBUTED su. Tuttavia, se utilizzi Map lo stato all'interno dei flussi di lavoro Standard, puoi impostarlo su. Mode DISTRIBUTED

    • ExecutionType— specifica il tipo di esecuzione per il flusso di lavoro Map come STANDARD o EXPRESS. È necessario fornire questo campo se è stato specificato DISTRIBUTED per il Mode sottocampo. Per ulteriori informazioni sui tipi di flusso di lavoro, vedereFlussi di lavoro Standard e Express.

  • 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 oggetto JSON contenente un set di stati delimitato da virgole. In questo oggetto, si definisce il. Map workflow

ItemReader

Speciifica un set di dati e la sua posizione. Lo Map stato riceve i dati di input dal set di dati specificato.

In modalità distribuita, puoi utilizzare un payload JSON passato da uno stato precedente o un'origine dati Amazon S3 su larga scala come set di dati. Per ulteriori informazioni, consulta ItemReader.

ItemsPath (facoltativo).

Speciifica un percorso di riferimento utilizzando la JsonPathsintassi per selezionare il nodo JSON che contiene una matrice di elementi all'interno dell'input dello stato.

In modalità distribuita, si specifica questo campo solo quando si utilizza un array JSON di un passaggio precedente come input di stato. Per ulteriori informazioni, consulta ItemsPath.

ItemSelector (facoltativo).

Sostituisce i valori dei singoli elementi del set di dati prima che vengano passati a ciascuna iterazione di stato. Map

In questo campo, specifichi un input JSON valido che contiene una raccolta di coppie chiave-valore. Queste coppie possono essere valori statici definiti nella definizione della macchina a stati, valori selezionati dall'input di stato utilizzando un percorso o valori a cui si accede dall'oggetto di contesto. Per ulteriori informazioni, consulta ItemSelector.

ItemBatcher (facoltativo).

Speciifica di elaborare gli elementi del set di dati in batch. Ogni esecuzione secondaria del flusso di lavoro riceve quindi un batch di questi elementi come input. Per ulteriori informazioni, consulta ItemBatcher.

MaxConcurrency (facoltativo).

Speciifica il numero di esecuzioni di workflow secondarie che possono essere eseguite in parallelo. L'interprete consente solo fino al numero specificato di esecuzioni parallele di flussi di lavoro secondari. Se non specificate un valore di concorrenza o lo impostate su zero, Step Functions non limita la concorrenza ed esegue 10.000 esecuzioni parallele di workflow secondari.

Nota

Sebbene sia possibile specificare un limite di concorrenza più elevato per le esecuzioni di flussi di lavoro secondari paralleli, si consiglia di non superare la capacità di un AWS servizio downstream, ad esempio. AWS Lambda

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

ToleratedFailurePercentage (facoltativo).

Definisce la percentuale di elementi non riusciti da tollerare in una Map Run. La Map Run fallisce automaticamente se supera questa percentuale. Step Functions calcola la percentuale di articoli non riusciti come risultato del numero totale di articoli non riusciti o scaduti diviso per il numero totale di articoli. È necessario specificare un valore compreso tra zero e 100. Per ulteriori informazioni, consulta Soglia di errore tollerata per lo stato della mappa distribuita.

ToleratedFailurePercentagePath (facoltativo).

Se si desidera fornire dinamicamente un valore percentuale di errore tollerato in base allo stato immesso utilizzando un percorso di riferimento, utilizzare. ToleratedFailurePercentagePath Una volta risolto, il percorso di riferimento deve selezionare un campo il cui valore è compreso tra zero e 100.

ToleratedFailureCount (facoltativo).

Definisce il numero di elementi non riusciti da tollerare in una Map Run. La Map Run fallisce automaticamente se supera questo numero. Per ulteriori informazioni, consulta Soglia di errore tollerata per lo stato della mappa distribuita.

ToleratedFailureCountPath (facoltativo).

Se si desidera fornire dinamicamente un valore di conteggio degli errori tollerati in base allo stato immesso utilizzando un percorso di riferimento, utilizzare. ToleratedFailureCountPath Una volta risolto, il percorso di riferimento deve selezionare un campo il cui valore è un numero intero non negativo.

Label (facoltativo).

Una stringa che identifica in modo univoco uno stato. Map Per ogni Map Run, Step Functions aggiunge l'etichetta al Map Run ARN. Di seguito è riportato un esempio di Map Run ARN con un'etichetta personalizzata denominata: demoLabel

arn:aws:states:us-east-1:123456789012:mapRun:demoWorkflow/demoLabel:3c39a231-69bb-3d89-8607-9e124eddbb0b

Se non specificate un'etichetta, Step Functions genera automaticamente un'etichetta univoca.

Nota

Le etichette non possono superare i 40 caratteri di lunghezza, devono essere univoche all'interno di una definizione di macchina a stati e non possono contenere nessuno dei seguenti caratteri:

  • Caratteri di spazio bianco

  • Caratteri jolly () ? *

  • Caratteri tra parentesi quadre () < > { } [ ]

  • Caratteri speciali () : ; , \ | ^ ~ $ # % & ` "

  • Caratteri di controllo (\\u0000- \\u001f o \\u007f -\\u009f).

Step Functions consente di creare nomi per macchine a stati, esecuzioni, attività ed etichette che contengono caratteri non ASCII. Questi nomi non ASCII non funzionano con Amazon. CloudWatch Per assicurarti di poter tenere traccia delle CloudWatch metriche, scegli un nome che utilizzi solo caratteri ASCII.

ResultWriter (facoltativo).

Speciifica la posizione Amazon S3 in cui Step Functions scrive tutti i risultati di esecuzione dei flussi di lavoro secondari.

Step Functions consolida tutti i dati di esecuzione del workflow secondario, come input e output dell'esecuzione, ARN e stato di esecuzione. Quindi esporta le esecuzioni con lo stesso stato nei rispettivi file nella posizione Amazon S3 specificata. Per ulteriori informazioni, consulta ResultWriter.

Se non esporti i risultati dello Map stato, restituisce una matrice di tutti i risultati di esecuzione del flusso di lavoro secondario. Per esempio:

[1, 2, 3, 4, 5]
ResultPath (facoltativo).

Speciifica dove, nell'input, inserire l'output delle iterazioni. L'input viene quindi filtrato come specificato dal OutputPathcampo, se presente, prima di essere passato 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 campo. ResultSelector 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. Un'esecuzione utilizza la politica di riprova se lo stato rileva errori di runtime. Per ulteriori informazioni, consulta Esempi di macchine a stati che utilizzano Retry e Catch.

Nota

Se si definiscono Retriers per lo stato Distributed Map, la politica di nuovo tentativo si applica a tutte le esecuzioni di workflow secondarie avviate dallo stato. Map Ad esempio, immaginate che il vostro Map stato abbia avviato tre esecuzioni secondarie di workflow, di cui una fallisce. Quando si verifica l'errore, l'esecuzione utilizza il Retry campo, se definito, per lo Map stato. La politica dei nuovi tentativi si applica a tutte le esecuzioni dei flussi di lavoro secondari e non solo a quelle non riuscite. Se una o più esecuzioni di workflow secondarie falliscono, Map Run non riesce.

Quando si riprova uno Map stato, viene creata una nuova Map Run.

Catch (facoltativo).

Un array di oggetti, denominati catcher, che definiscono uno stato di fallback. Step Functions utilizza i Catcher definiti in Catch se lo stato rileva errori di runtime. Quando si verifica un errore, l'esecuzione utilizza innanzitutto tutti i retrier definiti in. Retry Se la politica di riprova non è definita o è esaurita, l'esecuzione utilizza i relativi Catcher, se definiti. Per ulteriori informazioni, consulta Stati di fallback.

Passaggi successivi

Per continuare a saperne di più sullo stato della mappa distribuita, consulta le seguenti risorse: