Copia di CSV dati su larga scala utilizzando Distributed Map in 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à.

Copia di CSV dati su larga scala utilizzando Distributed Map in Step Functions

Questo tutorial ti aiuta a iniziare a usare lo Map stato in modalità Distribuita. Uno Map stato impostato su Distributed è noto come stato Distributed Map. Utilizzi lo stato Distributed Map nei tuoi flussi di lavoro per iterare su sorgenti di dati Amazon S3 su larga scala. Lo Map stato esegue ogni iterazione come un'esecuzione secondaria del flusso di lavoro, il che consente un'elevata concorrenza. Per ulteriori informazioni sulla modalità distribuita, consulta Map state in Distributed mode.

In questo tutorial, usi lo stato della mappa distribuita per iterare su un CSV file in un bucket Amazon S3. Quindi ne restituisci il contenuto, insieme all'esecuzione ARN di un flusso di lavoro secondario, in un altro bucket Amazon S3. Inizi creando un prototipo di flusso di lavoro in Workflow Studio. Successivamente, impostate la modalità di elaborazione Map dello stato su Distribuito, specificate il CSV file come set di dati e fornite la sua posizione allo Map stato. È inoltre necessario specificare il tipo di flusso di lavoro per le esecuzioni secondarie del flusso di lavoro che lo stato Distributed Map avvia come Express.

Oltre a queste impostazioni, si specificano anche altre configurazioni, come il numero massimo di esecuzioni simultanee di flussi di lavoro secondari e la posizione in cui esportare il Map risultato, per il flusso di lavoro di esempio utilizzato in questo tutorial.

Prerequisiti

  • Carica un CSV file in un bucket Amazon S3. È necessario definire una riga di intestazione all'interno del file. CSV Per informazioni sui limiti di dimensione imposti al CSV file e su come specificare la riga di intestazione, consulta. CSVfile in un bucket Amazon S3

  • Crea un altro bucket Amazon S3 e una cartella all'interno di quel bucket in cui esportare il risultato dello Map stato.

Importante

Assicurati che i tuoi bucket Amazon S3 siano sotto gli stessi Account AWS e Regione AWS come macchina a stati.

Fase 1: Creare il prototipo del flusso di lavoro

In questo passaggio, crei il prototipo per il tuo flusso di lavoro utilizzando Workflow Studio. Workflow Studio è un designer visivo di flussi di lavoro disponibile nella console Step Functions. È possibile scegliere lo stato e l'APIazione richiesti rispettivamente dalle schede Flusso e Azioni. Utilizzerai la funzionalità drag and drop di Workflow Studio per creare il prototipo del flusso di lavoro.

  1. Apri la console Step Functions e scegli Crea macchina a stati.

  2. Nella finestra di dialogo Scegli un modello, seleziona Vuoto.

  3. Scegliete Seleziona per aprire Workflow Studio inmodalità di progettazione.

  4. Dalla scheda Flusso, trascina uno stato della mappa e rilascialo nello stato vuoto denominato Trascina il primo stato qui.

  5. Nella scheda Configurazione, per Nome dello stato, inserisciProcess data.

  6. Dalla scheda Azioni, trascinate un AWS Lambda Richiama l'APIazione e inseriscila nello stato dei dati del processo.

  7. Rinomina il AWS Lambda Invoca lo stato a. Process CSV data

Passaggio 2: configura i campi richiesti per lo stato della mappa

In questo passaggio, configuri i seguenti campi obbligatori dello stato della mappa distribuita:

  • ItemReader— specifica il set di dati e la relativa posizione da cui Map lo stato può leggere l'input.

  • ItemProcessor— specifica i seguenti valori:

    • ProcessorConfig— Imposta EXPRESS rispettivamente Mode e ExecutionType su DISTRIBUTED e. Questo imposta la modalità di elaborazione Map dello stato e il tipo di workflow per le esecuzioni di workflow secondarie avviate dallo stato Distributed Map.

    • StartAt— Il primo stato del flusso di lavoro Map.

    • States— Definisce il flusso di lavoro Map, che è un insieme di passaggi da ripetere in ogni esecuzione del workflow secondario.

  • ResultWriter: specifica la posizione Amazon S3 in cui Step Functions scrive i risultati dello stato della mappa distribuita.

    Importante

    Assicurati che il bucket Amazon S3 che usi per esportare i risultati di un Map Run sia sotto lo stesso Account AWS e Regione AWS come macchina a stati. In caso contrario, l'esecuzione della macchina a stati fallirà con l'States.ResultWriterFailederrore.

Per configurare i campi obbligatori:
  1. Scegli lo stato dei dati del processo e, nella scheda Configurazione, procedi come segue:

    1. Per la modalità di elaborazione, scegli Distribuito.

    2. Per Origine articolo, scegli Amazon S3, quindi scegli il CSVfile in S3 dall'elenco a discesa dei sorgenti degli articoli S3.

    3. Effettua le seguenti operazioni per specificare la posizione Amazon S3 del tuo CSV file:

      1. Per l'oggetto S3, seleziona Enter bucket and key dall'elenco a discesa.

      2. Per Bucket, inserisci il nome del bucket Amazon S3 che contiene il file. CSV Ad esempio amzn-s3-demo-source-bucket.

      3. Per Key, inserisci il nome dell'oggetto Amazon S3 in cui hai salvato il CSV file. È inoltre necessario specificare il nome del CSV file in questo campo. Ad esempio csvDataset/ratings.csv.

    4. Per CSV i file, è necessario specificare anche la posizione dell'intestazione della colonna. Per fare ciò, scegliete Configurazione aggiuntiva, quindi per la posizione dell'CSVintestazione, mantenete la selezione predefinita di Prima riga se la prima riga del CSV file è l'intestazione. Altrimenti, scegli Dato per specificare l'intestazione all'interno della definizione della macchina a stati. Per ulteriori informazioni, consulta ReaderConfig.

    5. Per il tipo di esecuzione Child, scegliete Express.

  2. In Esporta posizione, per esportare i risultati di Map Run in una posizione Amazon S3 specifica, seleziona Esporta l'output dello stato della mappa su Amazon S3.

  3. Esegui questa operazione:

    1. Per il bucket S3, scegli Inserisci il nome e il prefisso del bucket dall'elenco a discesa.

    2. Per Bucket, inserisci il nome del bucket Amazon S3 in cui desideri esportare i risultati. Ad esempio mapOutputs.

    3. In Prefix, inserisci il nome della cartella in cui vuoi salvare i risultati. Ad esempio resultData.

Passaggio 3: Configurare le opzioni aggiuntive

Oltre alle impostazioni richieste per lo stato di una mappa distribuita, puoi specificare anche altre opzioni. Queste possono includere il numero massimo di esecuzioni simultanee di workflow secondari e la posizione in cui esportare il risultato Map dello stato.

  1. Scegli lo stato dei dati del processo. Quindi, in Origine dell'articolo, scegli Configurazione aggiuntiva.

  2. Esegui questa operazione:

    1. Scegli Modifica elementi con ItemSelector per specificare un JSON input personalizzato per ogni esecuzione del flusso di lavoro secondario.

    2. Immettete il seguente JSON input:

      { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" }

      Per informazioni su come creare un input personalizzato, vedereItemSelector (Mappa).

  3. Nelle impostazioni di runtime, per Limite di concorrenza, specifica il numero di esecuzioni simultanee di flussi di lavoro secondari che lo stato della mappa distribuita può avviare. Ad esempio, specifica 100.

  4. Apri una nuova finestra o scheda nel browser e completa la configurazione della funzione Lambda che utilizzerai in questo flusso di lavoro, come spiegato in. Fase 4: Configurare la funzione Lambda

Fase 4: Configurare la funzione Lambda

Importante

Assicurati che la tua funzione Lambda sia sotto la stessa Regione AWS come macchina a stati.

  1. Apri la console Lambda e scegli Crea funzione.

  2. Nella pagina Create function (Crea funzione), scegliere Author from scratch (Crea da zero).

  3. Nella sezione Informazioni di base, configura la tua funzione Lambda:

    1. Nel campo Function name (Nome funzione), immettere distributedMapLambda.

    2. In Runtime scegli Node.js.

    3. Mantieni tutte le selezioni predefinite e scegli Crea funzione.

    4. Dopo aver creato la funzione Lambda, copia l'Amazon Resource Name (ARN) della funzione visualizzato nell'angolo in alto a destra della pagina. Dovrai fornirlo nel prototipo del tuo flusso di lavoro. Di seguito è riportato un esempioARN:

      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
  4. Copia il codice seguente per la funzione Lambda e incollalo nella sezione Codice sorgente della distributedMapLambdapagina.

    exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } };
  5. Seleziona Deploy (Implementa). Una volta implementata la funzione, scegli Test per vedere l'output della tua funzione Lambda.

Passaggio 5: aggiorna il prototipo del flusso di lavoro

Nella console Step Functions, aggiornerai il tuo flusso di lavoro per aggiungere la funzione Lambda. ARN

  1. Torna alla scheda o alla finestra in cui hai creato il prototipo del flusso di lavoro.

  2. Scegliete la fase di elaborazione CSV dei dati e, nella scheda Configurazione, effettuate le seguenti operazioni:

    1. Per Tipo di integrazione, scegli Ottimizzato.

    2. Per Nome funzione, inizia a inserire il nome della tua funzione Lambda. Scegli la funzione dall'elenco a discesa visualizzato oppure scegli Inserisci il nome della funzione e fornisci la funzione ARN Lambda.

Passaggio 6: rivedi la definizione di Amazon States Language generata automaticamente e salva il flusso di lavoro

Mentre trascini gli stati dalle schede Action e Flow sull'area di disegno, Workflow Studio compone automaticamente la definizione Amazon States Language del tuo flusso di lavoro in tempo reale. Puoi modificare questa definizione in base alle tue esigenze.

  1. (Facoltativo) Scegliete Definizione sul Pannello Inspector pannello e visualizzate la definizione della macchina a stati.

    Suggerimento

    È inoltre possibile visualizzare la ASL definizione in Workflow Studio. Editor del codice Nell'editor di codice, puoi anche modificare la ASL definizione del tuo flusso di lavoro.

    Il codice di esempio seguente mostra la definizione di Amazon States Language generata automaticamente per il tuo flusso di lavoro.

    { "Comment": "Using Map state in Distributed mode", "StartAt": "Process data", "States": { "Process data": { "Type": "Map", "MaxConcurrency": 100, "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-source-bucket", "Key": "csvDataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "Process CSV data", "States": { "Process CSV data": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda" }, "End": true } } }, "Label": "Processdata", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "mapOutputs", "Prefix": "resultData" } }, "ItemSelector": { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" } } } }
  2. Specificate un nome per la vostra macchina a stati. Per fare ciò, scegli l'icona di modifica accanto al nome della macchina a stati predefinita di MyStateMachine. Quindi, nella configurazione della macchina a stati, specifica un nome nella casella Nome macchina a stati.

    Per questo tutorial, inserisci il nome DistributedMapDemo.

  3. (Facoltativo) Nella configurazione della macchina a stati, specificate altre impostazioni del flusso di lavoro, come il tipo di macchina a stati e il relativo ruolo di esecuzione.

    Per questo tutorial, mantieni tutte le selezioni predefinite nella configurazione della macchina a stati.

  4. Nella finestra di dialogo Conferma creazione del ruolo, scegli Conferma per continuare.

    Puoi anche scegliere Visualizza le impostazioni del ruolo per tornare alla configurazione della macchina a stati.

    Nota

    Se elimini il IAM ruolo creato da Step Functions, Step Functions non può ricrearlo in un secondo momento. Allo stesso modo, se modifichi il ruolo (ad esempio, rimuovendo Step Functions dai principi della IAM politica), Step Functions non può ripristinare le impostazioni originali in un secondo momento.

Passaggio 7: Esegui la macchina a stati

Un'esecuzione è un'istanza della macchina a stati in cui si esegue il flusso di lavoro per eseguire attività.

  1. Nella DistributedMapDemopagina, scegli Avvia esecuzione.

  2. Nella finestra di dialogo Avvia esecuzione, effettuate le seguenti operazioni:

    1. (Facoltativo) Immettete un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.

      ASCIINomi diversi e registrazione

      Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono non ASCII caratteri. Poiché tali caratteri non funzioneranno con Amazon CloudWatch, ti consigliamo di utilizzare solo ASCII caratteri in modo da poter tenere traccia delle metriche. CloudWatch

    2. (Facoltativo) Nella casella Input, inserisci i valori di input nel JSON formato per eseguire il flusso di lavoro.

    3. Selezionare Start execution (Avvia esecuzione).

    4. La console Step Functions ti indirizza a una pagina intitolata con il tuo ID di esecuzione. Questa pagina è nota come pagina dei dettagli di esecuzione. In questa pagina è possibile esaminare i risultati dell'esecuzione man mano che l'esecuzione procede o dopo il suo completamento.

      Per esaminare i risultati dell'esecuzione, scegliete i singoli stati nella vista Grafico, quindi scegliete le singole schede Dettagli del passaggio nel riquadro per visualizzare i dettagli di ogni stato, inclusi rispettivamente input, output e definizione. Per i dettagli sulle informazioni sull'esecuzione che è possibile visualizzare nella pagina Dettagli di esecuzione, vederePanoramica dei dettagli di esecuzione.

    Ad esempio, scegli lo Map stato, quindi scegli Map Run per aprire la pagina Map Run Details. In questa pagina, è possibile visualizzare tutti i dettagli di esecuzione dello stato della mappa distribuita e delle esecuzioni del workflow secondario avviate. Per informazioni su questa pagina, vedereVisualizzazione delle corse delle mappe.