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 oggetto JSON, 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 in un flusso di lavoro JSONPathbasato, per un set di dati in un file delimitato da testo 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", "VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt" } }

Nel seguente flusso di lavoro JSONatabasato, tieni presente che Parameters viene sostituito con Arguments.

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

Contenuto del ItemReader campo

A seconda del set di dati, il contenuto del ItemReader campo varia. Ad esempio, se il set di dati è un array JSON 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.

Resource

L'azione di integrazione dell'API Amazon S3 che Step Functions utilizzerà, ad esempio arn:aws:states:::s3:getObject

Arguments (JSONata) or Parameters (JSONPath)

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

Se il bucket ha il controllo delle versioni abilitato, puoi anche fornire la versione dell'oggetto Amazon S3.

ReaderConfig

Un oggetto JSON che specifica i seguenti dettagli:

  • InputType

    Accetta uno dei seguenti valori:CSV,,, JSONJSONL,PARQUET. MANIFEST

    Speciifica il tipo di origine dati Amazon S3, ad esempio un file delimitato da testo CSV (), un oggetto, un file JSON, JSON Lines, un file Parquet, un manifesto Athena o un elenco di inventario Amazon S3. In Workflow Studio, puoi selezionare un tipo di input dalla fonte dell'elemento S3.

    La maggior parte dei tipi di input che utilizzano S3GetObject il recupero supporta anche ExpectedBucketOwner i VersionId campi nei relativi parametri. I file Parquet sono l'unica eccezione che non supporta. VersionId

    I file di input supportano i seguenti tipi di compressione esterna: GZIP, ZSTD.

    Nomi di file di esempio: and. myObject.jsonl.gz myObject.csv.zstd

    Nota: i file Parquet sono un tipo di file binario compresso internamente. Sono supportate le compressioni GZIP, ZSTD e Snappy.

  • Transformation

    Facoltativo. Il valore sarà o o. NONE LOAD_AND_FLATTEN

    Se non specificato, NONE verrà assunto. Quando è impostato suLOAD_AND_FLATTEN, è necessario impostare ancheInputType.

    Comportamento predefinito, map itererà sugli oggetti di metadati restituiti dalle chiamate a. S3:ListObjectsV2 Se impostato suLOAD_AND_FLATTEN, map leggerà ed elaborerà gli oggetti di dati effettivi a cui si fa riferimento nell'elenco dei risultati.

  • ManifestType

    Facoltativo. Il valore sarà o ATHENA_DATA oS3_INVENTORY.

    Nota: se impostato suS3_INVENTORY, non è necessario specificare anche InputType perché si presume che il tipo siaCSV.

  • CSVDelimiter

    È possibile specificare questo campo quando InputType è CSV oMANIFEST.

    Accetta uno dei seguenti valori: COMMA (impostazione predefinita),PIPE,SEMICOLON,SPACE,TAB.

    Nota

    Con il CSVDelimiter campo, ItemReader è possibile elaborare file delimitati da caratteri diversi dalla virgola. I riferimenti ai «file CSV» includono anche i file che utilizzano delimitatori alternativi specificati dal campo. CSVDelimiter

  • CSVHeaderLocation

    È possibile specificare questo campo quando InputType è o. CSV MANIFEST

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

    • 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 file contiene i seguenti dati.

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

      Potresti fornire il seguente array JSON come intestazione CSV:

      "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "userId", "movieId", "rating", "timestamp" ] } }
    Dimensione dell'intestazione CSV

    Step Functions supporta intestazioni fino a 10 KB per file delimitati da testo.

  • MaxItems

    Per impostazione predefinita, lo Map stato esegue un'iterazione su tutti gli elementi del set di dati specificato. ImpostandoMaxItems, puoi limitare il numero di elementi di dati passati allo Map stato. Ad esempio, se si fornisce un file delimitato da testo che contiene 1.000 righe e si imposta un limite di 100, l'interprete passa solo 100 righe allo stato Distributed Map. Lo Map stato elabora gli elementi in ordine sequenziale, a partire dalla riga di intestazione.

    Per i JSONPathflussi di lavoro, è possibile utilizzare MaxItemsPath e un percorso di riferimento a una coppia chiave-valore nell'input di stato che si risolve in un numero intero. Nota che puoi specificare uno o entrambi, ma non entrambiMaxItems. MaxItemsPath

    Nota

    È possibile specificare un limite fino a 100.000.000 dopo il quale Distributed Map interrompe la lettura degli elementi.

Requisiti per l'account e la regione

I bucket Amazon S3 devono trovarsi nella stessa macchina Account AWS a Regione AWS stati.

Tieni presente che, anche se la tua macchina a stati potrebbe essere in grado di accedere a file in bucket diversi Account AWS che si trovano nello stesso Regione AWS, Step Functions supporta solo l'elenco di oggetti nei bucket Amazon S3 che si trovano sia nella stessa macchina a stati che nella Account AWS stessa macchina a stati. Regione AWS

Elaborazione di set di dati annidati (aggiornato l'11 settembre 2025)

Con il nuovo Transformation parametro, è possibile specificare un valore di LOAD_AND_FLATTEN e la mappa leggerà gli oggetti di dati effettivi a cui si fa riferimento nell'elenco dei risultati di una chiamata a. S3:ListObjectsV2

Prima di questa versione, era necessario creare mappe distribuite annidate per recuperare i metadati e quindi elaborare i dati effettivi. La prima mappa eseguiva un'iterazione sui metadati restituiti e richiamava i flussi di lavoro secondariS3:ListObjectsV2. Un'altra mappa all'interno di ogni macchina a stati secondari leggerebbe i dati effettivi dei singoli file. Con l'opzione di trasformazione, puoi eseguire entrambi i passaggi contemporaneamente.

Immagina di voler eseguire un controllo giornaliero sugli ultimi 24 file di log che il tuo sistema produce ogni ora e archivia in Amazon S3. Lo stato della tua mappa distribuita può elencare i file di registro conS3:ListObjectsV2, quindi iterare sui metadati di ciascun oggetto, oppure può ora caricare e analizzare gli oggetti di dati effettivi archiviati nel tuo bucket Amazon S3.

L'utilizzo dell'LOAD_AND_FLATTENopzione può aumentare la scalabilità, ridurre il numero di Map Run aperti ed elaborare più oggetti contemporaneamente. I job Athena e Amazon EMR in genere generano output che può essere elaborato con la nuova configurazione.

Di seguito è riportato un esempio dei parametri di una ItemReader definizione:

{ "QueryLanguage": "JSONata", "States": { ... "Map": { ... "ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "ReaderConfig": { // InputType is required if Transformation is LOAD_AND_FLATTEN. "InputType": "CSV | JSON | JSONL | PARQUET", // Transformation is OPTIONAL and defaults to NONE if not present "Transformation": "NONE | LOAD_AND_FLATTEN" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket1", "Prefix": "{% $states.input.PrefixKey %}" } }, ... } }

Esempi di set di dati

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

Nota

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

Uno stato della mappa distribuita può accettare un input JSON passato da una fase precedente del flusso di lavoro.

L'input può essere un array JSON, un oggetto JSON o un array all'interno di un nodo di un oggetto JSON.

Step Functions itererà direttamente sugli elementi di un array o sulle coppie chiave-valore di un oggetto JSON.

Per selezionare un nodo specifico che contiene un array da un oggetto JSON, puoi usare ItemsPath ( JSONPath Solo mappa) o usare un' JSONata espressione nel campo per gli stati. Items JSONata

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

Nota

Il ItemReader campo non è necessario se il set di dati è costituito da dati JSON di un passaggio precedente.

Input passed to the Map state

Considera il seguente array JSON 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'azione API 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 effettivi memorizzati nel bucket.

Per elaborare 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'azione ListObjectsV2 API contiene 100 elementi di metadati. Lo stato Distributed Map avvia quindi 100 esecuzioni di workflow secondarie per elaborare ogni elemento.

Per elaborare gli oggetti di dati direttamente, senza flussi di lavoro annidati, potete scegliere l'opzione di trasformazione LOAD_AND_FLATTEN per elaborare direttamente gli elementi.

Nota
  • Step Functions includerà anche un elemento per ogni cartella creata nel bucket Amazon S3 utilizzando la console Amazon S3. Gli elementi della cartella determinano l'avvio di ulteriori esecuzioni di flussi di lavoro secondari.

    Per evitare di creare ulteriori esecuzioni di workflow secondarie per ogni cartella, si consiglia di utilizzare l'opzione AWS CLI per creare cartelle. Per ulteriori informazioni, consulta Comandi Amazon S3 di alto livello nella Guida per AWS Command Line Interface l'utente.

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

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

ItemReader syntax

In questo esempio, hai organizzato i tuoi dati, che includono immagini, file JSON 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 di metadati 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" }

Con il supporto avanzato per S3 ListObjects V2 come fonte di input in Distributed Map, le tue macchine a stati possono leggere ed elaborare più oggetti di dati direttamente dai bucket Amazon S3, eliminando la necessità di mappe annidate per elaborare i metadati!

Con l'LOAD_AND_FLATTENopzione, la tua macchina a stati eseguirà le seguenti operazioni:

  • Leggi il contenuto effettivo di ogni oggetto elencato dalla chiamata Amazon S3ListObjectsV2.

  • Analizza il contenuto in base a InputType (CSV, JSON, JSONL, Parquet).

  • Crea elementi dal contenuto del file (righe/record) anziché dai metadati.

Con l'opzione di trasformazione, non sono più necessarie mappe distribuite annidate per elaborare i metadati. L'utilizzo dell'opzione LOAD_AND_FLATTEN aumenta la scalabilità, riduce il numero di esecuzioni di mappe attive ed elabora più oggetti contemporaneamente.

La configurazione seguente mostra l'impostazione per un: ItemReader

"ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "ReaderConfig": { "InputType": "JSON", "Transformation": "LOAD_AND_FLATTEN" }, "Arguments": { "Bucket": "S3_BUCKET_NAME", "Prefix": "S3_BUCKET_PREFIX" } }
Raccomandazione del prefisso Bucket

Ti consigliamo di includere una barra finale nel prefisso. Ad esempio, se si selezionano dati con il prefisso difolder1, la macchina a stati elaborerà entrambi e. folder1/myData.csv folder10/myData.csv L'utilizzo folder1/ elaborerà rigorosamente solo una cartella.

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

Quando l'esecuzione del flusso di lavoro raggiunge lo Map stato, Step Functions richiama l'azione GetObjectAPI per recuperare il file JSON specificato.

Se il file JSON contiene una struttura a oggetti annidata, puoi selezionare il nodo specifico con il set di dati con un. ItemsPointer Ad esempio, la seguente configurazione consente di estrarre un elenco annidato di prodotti in evidenza nell'inventario.

"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON", "ItemsPointer": "/inventory/products/featured" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "nested-data-file.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 file JSON 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 file delimitato da testo, JSON o JSON Lines se poi si applica il ItemSelector campo opzionale per ridurre le dimensioni dell'elemento.

  • Step Functions supporta 10 GB come dimensione massima di un singolo file in Amazon S3.

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

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

Per questo esempio, immaginate di avere un file JSON 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 file JSON. 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 file JSON Lines archiviato in un bucket Amazon S3 come set di dati.

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 file delimitato da testo, JSON o JSON Lines se poi si applica il ItemSelector campo opzionale per ridurre le dimensioni dell'elemento.

  • Step Functions supporta 10 GB come dimensione massima di un singolo file in Amazon S3.

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

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

Per questo esempio, immaginate di avere un file JSON Lines denominato. factcheck.jsonl Hai memorizzato questo file all'interno di un prefisso denominato jsonlDataset in un bucket Amazon S3. Di seguito è riportato un esempio del contenuto del file.

{"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": "JSONL" }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "jsonlDataset/factcheck.jsonl" } }
Input to a child workflow execution

Lo stato Distributed Map avvia tante esecuzioni di workflow secondarie quante sono le righe presenti nel file JSONL. L'esempio seguente mostra l'input ricevuto dall'esecuzione di un workflow secondario.

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

Con il CSVDelimiter campo, ItemReader puoi elaborare file delimitati da caratteri diversi dalla virgola. I riferimenti ai «file CSV» includono anche i file che utilizzano delimitatori alternativi specificati dal campo. CSVDelimiter

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

Step Functions analizza i file delimitati da testo in base alle seguenti regole:

  • Il delimitatore che separa i campi è specificato da in. CSVDelimiter ReaderConfig Il delimitatore predefinito è. COMMA

  • Le nuove righe 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.

  • Le barre rovesciate (\) sono un altro modo per sfuggire ai caratteri speciali. Le barre rovesciate funzionano solo con altre barre rovesciate, virgolette doppie e con il separatore di campo configurato come virgola o barra verticale. Una barra rovesciata seguita da qualsiasi altro carattere viene rimossa automaticamente.

  • È possibile conservare le barre rovesciate ripetendole. Ad esempio:

    path,size C:\\Program Files\\MyApp.exe,6534512
  • Le barre rovesciate che sfuggono alle virgolette doppie (\") funzionano solo se sono incluse in coppia, quindi consigliamo di evitare 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 file delimitato da testo, vedere. Example of parsing an input CSV file

Quando l'esecuzione del workflow raggiunge lo Map stato, Step Functions richiama l'azione GetObjectAPI per recuperare il file specificato. Lo Map stato esegue quindi un'iterazione su ogni riga del file e avvia un'esecuzione secondaria del flusso di lavoro per elaborare gli elementi di ogni riga. Ad esempio, si supponga di fornire come input un file delimitato da testo contenente 100 righe. Quindi, l'interprete passa ogni riga allo stato. Map 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 file delimitato da testo, JSON o JSON Lines se poi si applica il ItemSelector campo opzionale per ridurre le dimensioni dell'elemento.

  • Step Functions supporta 10 GB come dimensione massima di un singolo file in Amazon S3.

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

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

ItemReader syntax

Ad esempio, supponiamo di avere un file CSV 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", "CSVDelimiter": "PIPE" }, "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 file CSV, 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" }

I file Parquet possono essere utilizzati come sorgente di input. I file Apache Parquet archiviati in Amazon S3 forniscono un'elaborazione dati colonnare efficiente su larga scala.

Quando si utilizzano file Parquet, si applicano le seguenti condizioni:

  • 256 MB è la dimensione massima del gruppo di righe e 5 MB è la dimensione massima del piè di pagina. Se fornite file di input che superano entrambi i limiti, la macchina a stati restituirà un errore di runtime.

  • Il VersionId campo non è supportato perInputType=Parquet.

  • La compressione interna dei dati con GZIP, ZSTD e Snappy è supportata nativamente. Non sono necessarie estensioni dei nomi di file.

Di seguito viene mostrato un esempio di configurazione ASL da InputType impostare su Parquet:

"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "PARQUET" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "my-parquet-data-file-1.parquet" } }
Elaborazione di lavori su larga scala

Per lavori su larga scala, Step Functions utilizzerà molti lettori di input. I lettori interlacciano l'elaborazione, il che potrebbe far sì che alcuni lettori si interrompano mentre altri procedono. Il progresso intermittente è un comportamento previsto su larga scala.

È possibile utilizzare i file manifest Athena, generati dai risultati delle UNLOAD query, per specificare l'origine dei file di dati per lo stato della mappa. È stato ManifestType impostato suATHENA_DATA, e InputType su CSVJSONL, oParquet.

Durante l'esecuzione di una UNLOAD query, Athena genera un file manifesto di dati oltre agli oggetti dati effettivi. Il file manifest fornisce un elenco CSV strutturato dei file di dati. Sia il file manifest che i file di dati vengono salvati nella posizione dei risultati della query Athena in Amazon S3.

UNLOAD (<YOUR_SELECT_QUERY>) TO 'S3_URI_FOR_STORING_DATA_OBJECT' WITH (format = 'JSON')

Panoramica concettuale del processo, in breve:

  1. Seleziona i tuoi dati da una tabella utilizzando una UNLOAD query in Athena.

  2. Athena genererà un file manifest (CSV) e gli oggetti dati in Amazon S3.

  3. Configura Step Functions per leggere il file manifest ed elaborare l'input.

La funzionalità può elaborare i formati di output CSV, JSONL e Parquet di Athena. Tutti gli oggetti a cui si fa riferimento in un singolo file manifesto devono avere lo stesso formato. InputType Nota che gli oggetti CSV esportati da una UNLOAD query non includono l'intestazione nella prima riga. Verifica CSVHeaderLocation se devi fornire le intestazioni delle colonne.

Il contesto della mappa includerà anche un $states.context.Map.Item.Source modo per personalizzare l'elaborazione in base alla fonte dei dati.

Di seguito è riportato un esempio di configurazione di un file ItemReader configurato per l'utilizzo di un manifesto Athena:

"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "ManifestType": "ATHENA_DATA", "InputType": "CSV | JSONL | PARQUET" }, "Arguments": { "Bucket": "<S3_BUCKET_NAME>", "Key": "<S3_KEY_PREFIX><QUERY_ID>-manifest.csv" } }
Utilizzo del pattern manifest Athena in Workflow Studio

Uno scenario comune per l'elaborazione dei dati applica una mappa ai dati provenienti da una query Athena UNLOAD. La Mappa richiama una funzione Lambda per elaborare ogni elemento descritto nel manifesto di Athena. Step Functions Workflow Studio fornisce uno schema già pronto che combina tutti questi componenti in blocchi da trascinare sulla tela della macchina a stati.

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'azione GetObjectAPI per recuperare il file manifest di inventario Amazon S3 specificato.

Per impostazione predefinita, lo Map stato esegue quindi un'iterazione sugli oggetti nell'inventario per restituire una matrice di metadati degli oggetti di inventario Amazon S3.

Se si specifica ManifestType S3_INVENTORY, non può essere specificato. InputType

Nota
  • Step Functions supporta 10 GB come dimensione massima di un singolo file in un report di inventario di Amazon S3 dopo la decompressione. 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 politiche IAM per i set di dati, consulta. Raccomandazioni sulle policy IAM per i set di dati

Di seguito è riportato un esempio di file di inventario in formato CSV. 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

Step Functions non supporta un report di inventario Amazon S3 definito dall'utente come set di dati.

Il formato di output del report dell'inventario Amazon S3 deve essere CSV.

Per ulteriori informazioni sugli inventari di Amazon S3 e su come configurarli, consulta Amazon S3 Inventory.

Il seguente esempio di file manifesto di inventario di Amazon S3 mostra le intestazioni CSV per i 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 flusso di lavoro 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.

Raccomandazioni sulle policy IAM per i set di dati

Quando crei flussi di lavoro con la console Step Functions, Step Functions può generare automaticamente policy IAM basate sulle risorse nella definizione del flusso di lavoro. Le policy generate includono i privilegi minimi necessari per consentire al ruolo della macchina a stati di richiamare l'azione StartExecution API per lo stato della mappa distribuita e accedere alle AWS risorse, come i bucket e gli oggetti Amazon S3 e le funzioni Lambda.

Ti consigliamo di includere solo le autorizzazioni necessarie nelle tue policy IAM. Ad esempio, se il tuo flusso di lavoro include uno Map stato in modalità Distribuita, limita le tue policy allo specifico bucket e cartella Amazon S3 che contiene i tuoi 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 policy IAM per il tuo flusso di lavoro. Definisci le policy fino ai nomi dei bucket e degli oggetti in cui il percorso si risolve in fase di esecuzione.

Gli esempi seguenti mostrano le tecniche per concedere i privilegi minimi necessari per accedere ai set di dati Amazon S3 utilizzando ListObjectsle azioni V2 e API. GetObject

Esempio condizione utilizzando un oggetto Amazon S3 come set di dati

La seguente condizione concede i privilegi minimi per accedere agli oggetti in una processImages cartella di un bucket Amazon S3.

"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
Esempio utilizzo di un file CSV come set di dati

L'esempio seguente mostra le azioni necessarie per accedere a un file CSV denominato. ratings.csv

"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
Esempio utilizzo di un inventario Amazon S3 come set di dati

Di seguito sono riportati esempi di risorse per un manifesto di inventario e file di dati di Amazon S3.

"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
Esempio utilizzo di ListObjects V2 per limitarsi al prefisso di una cartella

Quando si utilizza ListObjectsV2, verranno generate due politiche. Una è necessaria per consentire l'elenco dei contenuti del bucket (ListBucket) e un'altra policy consentirà il recupero degli oggetti nel bucket (). GetObject

Di seguito sono riportati esempi di azioni, risorse e una condizione:

"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]

Nota che non GetObject verrà applicato alcun ambito e utilizzerai un carattere jolly (*) per l'oggetto.