ItemReader (Mappa) - 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à.

ItemReader (Mappa)

Il ItemReader campo è un JSON oggetto che specifica un set di dati e la sua posizione. Uno stato della mappa distribuita utilizza questo set di dati come input. L'esempio seguente mostra la sintassi del ItemReader campo se il set di dati è un CSV file archiviato in un bucket Amazon S3.

"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } }
Suggerimento

In Workflow Studio, specifichi il set di dati e la sua posizione nel campo Origine dell'elemento.

Contenuto del campo ItemReader

A seconda del set di dati, il contenuto del ItemReader campo varia. Ad esempio, se il set di dati è un JSON array passato da un passaggio precedente del flusso di lavoro, il ItemReader campo viene omesso. Se il set di dati è un'origine dati Amazon S3, questo campo contiene i seguenti sottocampi.

ReaderConfig

Un JSON oggetto che specifica i seguenti dettagli:

  • InputType

    Speciifica il tipo di origine dati di Amazon S3, ad esempio CSV file, oggettoJSON, file o un elenco di inventario Amazon S3. In Workflow Studio, puoi selezionare un tipo di input dall'elenco a discesa delle sorgenti degli elementi di Amazon S3 nel campo Origine articolo.

  • CSVHeaderLocation

    Nota

    È necessario specificare questo campo solo se si utilizza un CSV file come set di dati.

    Accetta uno dei seguenti valori per specificare la posizione dell'intestazione della colonna:

    Importante

    Attualmente, Step Functions supporta CSV intestazioni fino a 10 KB.

    • FIRST_ROW— Utilizzate questa opzione se la prima riga del file è l'intestazione.

    • GIVEN— Utilizzate questa opzione per specificare l'intestazione all'interno della definizione della macchina a stati. Ad esempio, se il CSV file contiene i seguenti dati.

      1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...

      Fornisci il seguente JSON array come CSV intestazione.

      "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "userId", "movieId", "rating", "timestamp" ] } }
    Suggerimento

    In Workflow Studio, è possibile trovare questa opzione in Configurazione aggiuntiva nel campo Origine dell'elemento.

  • MaxItems

    Limita il numero di elementi di dati passati allo Map stato. Ad esempio, supponiamo di fornire un CSV file contenente 1000 righe e di specificare un limite di 100. Quindi, l'interprete passa solo 100 righe allo Map stato. Lo Map stato elabora gli elementi in ordine sequenziale, a partire dalla riga di intestazione.

    Per impostazione predefinita, lo Map stato esegue un'iterazione su tutti gli elementi del set di dati specificato.

    Nota

    Attualmente, è possibile specificare un limite fino a 100.000.000. Lo stato della Mappa distribuita interrompe la lettura degli elementi che superano questo limite.

    Suggerimento

    In Workflow Studio, puoi trovare questa opzione in Configurazione aggiuntiva nel campo Origine dell'elemento.

    In alternativa, è possibile specificare un percorso di riferimento a una coppia chiave-valore esistente nell'input di stato della Mappa distribuita. Questo percorso deve risolversi in un numero intero positivo. Il percorso di riferimento viene specificato nel MaxItemsPath sottocampo.

    Importante

    È possibile specificare il MaxItemsPath campo MaxItems o il sottocampo, ma non entrambi.

Resource

L'APIazione Amazon S3 che Step Functions deve richiamare a seconda del set di dati specificato.

Parameters

Un JSON oggetto che specifica il nome del bucket Amazon S3 e la chiave dell'oggetto in cui è archiviato il set di dati.

Importante

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

Esempi di set di dati

È possibile specificare una delle seguenti opzioni come set di dati:

Importante

Step Functions necessita delle autorizzazioni appropriate per accedere ai set di dati Amazon S3 che utilizzi. Per informazioni sulle IAM politiche per i set di dati, consulta. IAMpolitiche per i set di dati

Uno stato della mappa distribuita può accettare un JSON input passato da una fase precedente del flusso di lavoro. Questo input deve essere un array o deve contenere un array all'interno di un nodo specifico. Per selezionare un nodo che contiene l'array, puoi usare il ItemsPath (Mappa) campo.

Per elaborare singoli elementi dell'array, lo stato Distributed Map avvia un'esecuzione del flusso di lavoro secondario per ogni elemento dell'array. Le schede seguenti mostrano esempi dell'input passato allo Map stato e dell'input corrispondente all'esecuzione di un workflow secondario.

Nota

Step Functions omette il ItemReader campo quando il set di dati è un JSON array di un passaggio precedente.

Input passed to the Map state

Considerate la seguente JSON serie di tre elementi.

"facts": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" } ]
Input passed to a child workflow execution

Lo stato Distributed Map avvia tre esecuzioni di workflow secondarie. Ogni esecuzione riceve un elemento dell'array come input. L'esempio seguente mostra l'input ricevuto dall'esecuzione di un workflow secondario.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Uno stato della mappa distribuita può iterare sugli oggetti archiviati in un bucket Amazon S3. Quando l'esecuzione del flusso di lavoro raggiunge lo Map stato, Step Functions richiama l'APIazione ListObjectsV2, che restituisce un array di metadati degli oggetti Amazon S3. In questo array, ogni elemento contiene dati, ad esempio una chiave, per i ETagdati archiviati nel bucket.

Per elaborare i singoli elementi dell'array, lo stato Distributed Map avvia l'esecuzione di un workflow secondario. Ad esempio, supponiamo che il bucket Amazon S3 contenga 100 immagini. Quindi, l'array restituito dopo aver richiamato l'ListObjectsV2APIazione contiene 100 elementi. Lo stato Distributed Map avvia quindi 100 esecuzioni di workflow secondarie per elaborare ogni elemento dell'array.

Nota
  • Attualmente, Step Functions include anche un elemento per ogni cartella creata in uno specifico bucket Amazon S3 utilizzando la console Amazon S3. Ciò si traduce in un'esecuzione aggiuntiva del flusso di lavoro secondario avviata dallo stato della mappa distribuita. Per evitare di creare un'esecuzione aggiuntiva del flusso di lavoro secondario per la cartella, si consiglia di utilizzare AWS CLI per creare cartelle. Per ulteriori informazioni, consulta Comandi di alto livello di Amazon S3 nel AWS Command Line Interface Guida per l'utente.

  • Step Functions necessita delle autorizzazioni appropriate per accedere ai set di dati Amazon S3 che utilizzi. Per informazioni sulle IAM politiche per i set di dati, consulta. IAMpolitiche per i set di dati

Le schede seguenti mostrano esempi della sintassi dei ItemReader campi e dell'input passato all'esecuzione di un workflow secondario per questo set di dati.

ItemReader syntax

In questo esempio, hai organizzato i tuoi dati, che includono immagini, JSON file e oggetti, all'interno di un prefisso denominato processData in un bucket Amazon S3 denominato. amzn-s3-demo-bucket

"ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Prefix": "processData" } }
Input passed to a child workflow execution

Lo stato Distributed Map avvia tante esecuzioni di workflow secondarie quanti sono gli elementi presenti nel bucket Amazon S3. L'esempio seguente mostra l'input ricevuto dall'esecuzione di un workflow secondario.

{ "Etag": "\"05704fbdccb224cb01c59005bebbad28\"", "Key": "processData/images/n02085620_1073.jpg", "LastModified": 1668699881, "Size": 34910, "StorageClass": "STANDARD" }

Uno stato della mappa distribuita può accettare un JSON file archiviato in un bucket Amazon S3 come set di dati. Il JSON file deve contenere un array.

Quando l'esecuzione del workflow raggiunge lo Map stato, Step Functions richiama l'GetObjectAPIazione per recuperare il file specificato. JSON Lo Map stato esegue quindi un'iterazione su ogni elemento dell'array e avvia un'esecuzione del flusso di lavoro secondario per ogni elemento. Ad esempio, se il JSON file contiene 1000 elementi dell'array, lo Map stato avvia 1000 esecuzioni di workflow secondarie.

Nota
  • L'input di esecuzione utilizzato per avviare l'esecuzione di un workflow secondario non può superare i 256 KB. Tuttavia, Step Functions supporta la lettura di un elemento fino a 8 MB da un JSON file CSV or se poi si applica il ItemSelector campo opzionale per ridurre le dimensioni dell'elemento.

  • Attualmente, Step Functions supporta 10 GB come dimensione massima di un singolo file in un report di inventario Amazon S3. Tuttavia, Step Functions può elaborare più di 10 GB se ogni singolo file è inferiore a 10 GB.

  • Step Functions necessita delle autorizzazioni appropriate per accedere ai set di dati Amazon S3 che utilizzi. Per informazioni sulle IAM politiche per i set di dati, consulta. IAMpolitiche per i set di dati

Le schede seguenti mostrano esempi della sintassi dei ItemReader campi e dell'input passato all'esecuzione di un workflow secondario per questo set di dati.

Per questo esempio, immaginate di avere un JSON file denominato. factcheck.json Hai memorizzato questo file all'interno di un prefisso denominato jsonDataset in un bucket Amazon S3. Di seguito è riportato un esempio del set di dati. JSON

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]
ItemReader syntax
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON" }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "jsonDataset/factcheck.json" } }
Input to a child workflow execution

Lo stato Distributed Map avvia tante esecuzioni di workflow secondarie quanti sono gli elementi dell'array presenti nel JSON file. L'esempio seguente mostra l'input ricevuto dall'esecuzione di un workflow secondario.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Uno stato della mappa distribuita può accettare un CSV file archiviato in un bucket Amazon S3 come set di dati. Se utilizzi un CSV file come set di dati, devi specificare un'intestazione di colonna. CSV Per informazioni su come specificare un'CSVintestazione, consulta. Contenuto del campo ItemReader

Step Functions analizza CSV i file in base alle seguenti regole:

  • Le virgole (,) sono un delimitatore che separa i campi.

  • Le newline sono un delimitatore che separa i record.

  • I campi vengono trattati come stringhe. Per le conversioni dei tipi di dati, usa la funzione States.StringToJson intrinseca in. ItemSelector (Mappa)

  • Le virgolette doppie (» «) non sono necessarie per racchiudere stringhe. Tuttavia, le stringhe racchiuse tra virgolette doppie possono contenere virgole e nuove righe senza fungere da delimitatori di record.

  • È possibile conservare le virgolette doppie ripetendole.

  • Se il numero di campi in una riga è inferiore al numero di campi nell'intestazione, Step Functions fornisce stringhe vuote per i valori mancanti.

  • Se il numero di campi in una riga è superiore al numero di campi nell'intestazione, Step Functions salta i campi aggiuntivi.

Per ulteriori informazioni su come Step Functions analizza un CSV file, vedereExample of parsing an input CSV file.

Quando l'esecuzione del workflow raggiunge lo Map stato, Step Functions richiama l'GetObjectAPIazione per recuperare il file specificato. CSV Lo Map stato esegue quindi un'iterazione su ogni riga del CSV file e avvia un'esecuzione secondaria del flusso di lavoro per elaborare gli elementi di ogni riga. Ad esempio, supponete di fornire un CSV file che contiene 100 righe come input. Quindi, l'interprete passa ogni riga allo Map stato. Lo Map stato elabora gli elementi in ordine seriale, a partire dalla riga di intestazione.

Nota
  • L'input di esecuzione utilizzato per avviare l'esecuzione di un workflow secondario non può superare i 256 KB. Tuttavia, Step Functions supporta la lettura di un elemento fino a 8 MB da un JSON file CSV or se poi si applica il ItemSelector campo opzionale per ridurre le dimensioni dell'elemento.

  • Attualmente, Step Functions supporta 10 GB come dimensione massima di un singolo file in un report di inventario Amazon S3. Tuttavia, Step Functions può elaborare più di 10 GB se ogni singolo file è inferiore a 10 GB.

  • Step Functions necessita delle autorizzazioni appropriate per accedere ai set di dati Amazon S3 che utilizzi. Per informazioni sulle IAM politiche per i set di dati, consulta. IAMpolitiche per i set di dati

Le schede seguenti mostrano esempi della sintassi dei ItemReader campi e dell'input passato all'esecuzione di un workflow secondario per questo set di dati.

ItemReader syntax

Ad esempio, supponiamo di avere un CSV file denominato. ratings.csv Quindi, hai archiviato questo file all'interno di un prefisso denominato csvDataset in un bucket Amazon S3.

{ "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } } }
Input to a child workflow execution

Lo stato Distributed Map avvia tante esecuzioni di workflow secondarie quante sono le righe presenti nel CSV file, esclusa la riga di intestazione, se presente nel file. L'esempio seguente mostra l'input ricevuto dall'esecuzione di un workflow secondario.

{ "rating": "3.5", "movieId": "307", "userId": "1", "timestamp": "1256677221" }

Uno stato Distributed Map può accettare un file manifesto di inventario Amazon S3 archiviato in un bucket Amazon S3 come set di dati.

Quando l'esecuzione del flusso di lavoro raggiunge lo Map stato, Step Functions richiama l'GetObjectAPIazione per recuperare il file manifesto dell'inventario Amazon S3 specificato. Lo Map stato esegue quindi un'iterazione sugli oggetti nell'inventario per restituire una matrice di metadati degli oggetti di inventario Amazon S3.

Nota
  • Attualmente, Step Functions supporta 10 GB come dimensione massima di un singolo file in un report di inventario Amazon S3. Tuttavia, Step Functions può elaborare più di 10 GB se ogni singolo file è inferiore a 10 GB.

  • Step Functions necessita delle autorizzazioni appropriate per accedere ai set di dati Amazon S3 che utilizzi. Per informazioni sulle IAM politiche per i set di dati, consulta. IAMpolitiche per i set di dati

Di seguito è riportato un esempio di modello di inventario in CSV formato. Questo file include gli oggetti denominati csvDataset andimageDataset, che sono archiviati in un bucket Amazon S3 denominato. amzn-s3-demo-source-bucket

"amzn-s3-demo-source-bucket","csvDataset/","0","2022-11-16T00:27:19.000Z" "amzn-s3-demo-source-bucket","csvDataset/titles.csv","3399671","2022-11-16T00:29:32.000Z" "amzn-s3-demo-source-bucket","imageDataset/","0","2022-11-15T20:00:44.000Z" "amzn-s3-demo-source-bucket","imageDataset/n02085620_10074.jpg","27034","2022-11-15T20:02:16.000Z" ...
Importante

Attualmente, Step Functions non supporta i report di inventario Amazon S3 definiti dall'utente come set di dati. È inoltre necessario assicurarsi che il formato di output del report di inventario di Amazon S3 sia. CSV Per ulteriori informazioni sugli inventari di Amazon S3 e su come configurarli, consulta Amazon S3 Inventory nella Amazon S3 User Guide.

Il seguente esempio di file di manifesto dell'inventario mostra le CSV intestazioni dei metadati degli oggetti di inventario.

{ "sourceBucket" : "amzn-s3-demo-source-bucket", "destinationBucket" : "arn:aws:s3:::amzn-s3-demo-inventory", "version" : "2016-11-30", "creationTimestamp" : "1668560400000", "fileFormat" : "CSV", "fileSchema" : "Bucket, Key, Size, LastModifiedDate", "files" : [ { "key" : "amzn-s3-demo-bucket/destination-prefix/data/20e55de8-9c21-45d4-99b9-46c732000228.csv.gz", "size" : 7300, "MD5checksum" : "a7ff4a1d4164c3cd55851055ec8f6b20" } ] }

Le schede seguenti mostrano esempi della sintassi del ItemReader campo e dell'input passato all'esecuzione di un workflow secondario per questo set di dati.

ItemReader syntax
{ "ItemReader": { "ReaderConfig": { "InputType": "MANIFEST" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Key": "destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json" } } }
Input to a child workflow execution
{ "LastModifiedDate": "2022-11-16T00:29:32.000Z", "Bucket": "amzn-s3-demo-source-bucket", "Size": "3399671", "Key": "csvDataset/titles.csv" }

A seconda dei campi selezionati durante la configurazione del report di inventario di Amazon S3, il contenuto del manifest.json file può variare rispetto all'esempio mostrato.

IAMpolitiche per i set di dati

Quando crei flussi di lavoro con la console Step Functions, Step Functions può generare automaticamente IAM policy basate sulle risorse nella definizione del flusso di lavoro. Queste politiche includono i privilegi minimi necessari per consentire al ruolo della macchina a stati di richiamare l'StartExecutionAPIazione per lo stato della Mappa distribuita. Queste politiche includono anche i privilegi minimi necessari per accedere a Step Functions. AWS risorse, come bucket e oggetti Amazon S3 e funzioni Lambda. Ti consigliamo vivamente di includere solo le autorizzazioni necessarie nelle tue politiche. IAM Ad esempio, se il tuo flusso di lavoro include uno Map stato in modalità Distribuita, limita le policy allo specifico bucket e alla cartella Amazon S3 che contiene il set di dati.

Importante

Se specifichi un bucket Amazon S3 e un oggetto, o prefisso, con un percorso di riferimento a una coppia chiave-valore esistente nell'input dello stato della Mappa distribuita, assicurati di aggiornare le politiche per il tuo flusso di lavoro. IAM Definisci le policy fino ai nomi dei bucket e degli oggetti in cui il percorso viene risolto in fase di esecuzione.

I seguenti esempi di IAM policy garantiscono i privilegi minimi necessari per accedere ai set di dati di Amazon S3 utilizzando ListObjects V2 and actions. GetObjectAPI

Esempio IAMpolicy per l'oggetto Amazon S3 come set di dati

L'esempio seguente mostra una IAM politica che concede i privilegi minimi per accedere agli oggetti organizzati all'interno di un processImages bucket Amazon S3 denominato. amzn-s3-demo-bucket

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } } } ] }
Esempio IAMpolitica per un file come set di dati CSV

L'esempio seguente mostra una IAM politica che concede i privilegi minimi per accedere a un CSV file denominato. ratings.csv

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ] } ] }
Esempio IAMpolitica per un inventario Amazon S3 come set di dati

L'esempio seguente mostra una IAM politica che concede i privilegi minimi per accedere a un report di inventario di Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/data/*" ] } ] }