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à.
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": "myBucket
",
"Key": "csvDataset/ratings.csv
",
"VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
}
}
L'esempio seguente mostra che nei flussi di lavoro JSONata basati, viene sostituito da Arguments. Parameters
"ItemReader": {
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "FIRST_ROW"
},
"Resource": "arn:aws:states:::s3:getObject",
"Arguments": {
"Bucket": "amzn-s3-demo-bucket
",
"Key": "csvDataset/ratings.csv
"
}
}
Suggerimento
In Workflow Studio, si specifica 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 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.
ReaderConfig
-
Un oggetto JSON che specifica i seguenti dettagli:
-
InputType
Accetta uno dei seguenti valori:
CSV
,,JSON
,JSONL
.MANIFEST
Speciifica il tipo di origine dati Amazon S3, ad esempio un file delimitato da testo
CSV
(), un oggetto, un file JSON, JSON Lines 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. -
CSVDelimiter
Specificate questo campo solo se utilizzate
CSV
asInputType
, che indica un file delimitato da testo. Accetta uno dei seguenti valori:COMMA
(impostazione predefinita),,PIPE
,SEMICOLON
SPACE
,TAB
.Nota
Il
CSVDelimiter
campo consente unaItemReader
maggiore flessibilità nel supportare file delimitati da altri caratteri oltre alla virgola. Pertanto, supponiamo che i nostri riferimenti ai file CSV in relazione a includanoItemReader
anche file che utilizzano delimitatori accettati dal campo.CSVDelimiter
-
CSVHeaderLocation
Obbligatorio se lo
InputType
èCSV
, il che indica un file delimitato da testo con delimitatori accettati dal campo.CSVDelimiter
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 ...
Fornisci il seguente array JSON come intestazione CSV.
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [
"userId"
,"movieId"
,"rating"
,"timestamp"
] } }
Importante
Attualmente, Step Functions supporta intestazioni fino a 10 KB per file delimitati da testo.
Suggerimento
In Workflow Studio, puoi 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, supponete di fornire un file delimitato da testo contenente 1000 righe e di specificare un limite di 100. Quindi, l'interprete passa solo 100 righe allo stato.Map
LoMap
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
campoMaxItems
o il sottocampo, ma non entrambi.
-
Resource
-
L'azione dell'API Amazon S3 che Step Functions deve richiamare a seconda del set di dati specificato.
Parameters
-
Un oggetto JSON che specifica il nome del bucket Amazon S3 e la chiave dell'oggetto in cui è archiviato il set di dati. In questo campo, puoi anche fornire la versione dell'oggetto Amazon S3, se il controllo delle versioni del bucket è abilitato.
Importante
Assicurati che i bucket Amazon S3 si trovino nella stessa macchina a stati Account AWS e nella Regione AWS stessa 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 politiche IAM per i set di dati, consulta. Politiche IAM per set di dati
Uno stato della mappa distribuita può accettare un input JSON 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 ( JSONPath Solo 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 array JSON di un passaggio precedente.
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 archiviati 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. 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 il 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. Politiche IAM per 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.
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.
Quando l'esecuzione del flusso di lavoro raggiunge lo Map
stato, Step Functions richiama l'azione GetObjectAPI per recuperare il file JSON specificato. 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. -
Attualmente, 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. Politiche IAM per 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.
Hai memorizzato questo file all'interno di un prefisso denominato factcheck.json
in un bucket Amazon S3. Di seguito è riportato un esempio del set di dati JSON.jsonDataset
[
{
"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"
},
...
]
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. -
Attualmente, 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. Politiche IAM per 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, immagina di avere un file JSON Lines denominato.
Hai memorizzato questo file all'interno di un prefisso denominato factcheck.jsonl
in un bucket Amazon S3. Di seguito è riportato un esempio del contenuto del file.jsonlDataset
{"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"}
Nota
Il CSVDelimiter
campo consente una ItemReader
maggiore flessibilità nel supportare file delimitati da altri caratteri oltre alla virgola. Pertanto, supponiamo che i nostri riferimenti ai file CSV in relazione a includano ItemReader
anche file che utilizzano delimitatori accettati 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 campo ItemReader
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.
-
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. -
Attualmente, 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. Politiche IAM per 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.
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. 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 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. Politiche IAM per 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
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 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.
Politiche IAM per 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. Queste politiche includono i privilegi minimi necessari per consentire al ruolo della macchina a stati di richiamare l'azione dell'StartExecution
API per lo stato della mappa distribuita. Queste policy includono anche i privilegi minimi necessari Step Functions per accedere alle AWS risorse, come i bucket e gli oggetti Amazon S3 e le funzioni Lambda. Ti consigliamo vivamente 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 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 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.
I seguenti esempi di policy IAM garantiscono i privilegi minimi necessari per accedere ai set di dati Amazon S3 utilizzando ListObjectsle azioni GetObjectV2 e API.
Esempio Policy IAM per oggetti Amazon S3 come set di dati
L'esempio seguente mostra una policy IAM che concede i privilegi minimi per accedere agli oggetti organizzati all'interno di un
bucket Amazon S3 denominato. processImages
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 Politica IAM per un file CSV come set di dati
L'esempio seguente mostra una policy IAM che concede i privilegi minimi per accedere a un file CSV 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 Policy IAM per un inventario Amazon S3 come set di dati
L'esempio seguente mostra una policy IAM 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/*"
]
}
]
}