Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Das ItemReader
Feld ist ein JSON Objekt, das einen Datensatz und seinen Standort angibt. Ein Distributed-Map-Status verwendet diesen Datensatz als Eingabe.
Das folgende Beispiel zeigt die Syntax des ItemReader
Felds in einem JSONPathbasierten Workflow für einen Datensatz in einer CSV Datei, die in einem Amazon S3 S3-Bucket gespeichert ist.
"ItemReader": {
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "FIRST_ROW"
},
"Resource": "arn:aws:states:::s3:getObject",
"Parameters": {
"Bucket": "amzn-s3-demo-bucket
",
"Key": "csvDataset/ratings.csv
"
}
}
Das folgende Beispiel zeigt, dass in JSONata basierten Workflows, durch Argumente ersetzt Parameters
wird.
"ItemReader": {
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "FIRST_ROW"
},
"Resource": "arn:aws:states:::s3:getObject",
"Arguments": {
"Bucket": "amzn-s3-demo-bucket
",
"Key": "csvDataset/ratings.csv
"
}
}
Tipp
In Workflow Studio geben Sie den Datensatz und seinen Speicherort im Feld Elementquelle an.
Inhalt des ItemReader Felds
Je nach Datensatz variiert der Inhalt des ItemReader
Felds. Wenn es sich bei Ihrem Datensatz beispielsweise um ein JSON Array handelt, das aus einem vorherigen Schritt im Workflow übergeben wurde, wird das ItemReader
Feld weggelassen. Wenn es sich bei Ihrem Datensatz um eine Amazon S3 S3-Datenquelle handelt, enthält dieses Feld die folgenden Unterfelder.
ReaderConfig
Ein JSON Objekt, das die folgenden Details spezifiziert:
InputType
Akzeptiert einen der folgenden Werte:
CSV
,JSON
,MANIFEST
.Gibt den Typ der Amazon S3 S3-Datenquelle an, z. B. CSV Datei, Objekt, JSON Datei oder eine Amazon S3 S3-Inventarliste. In Workflow Studio können Sie einen Eingabetyp aus der Dropdownliste Amazon S3 S3-Artikelquelle unter dem Feld Artikelquelle auswählen.
CSVHeaderLocation
Anmerkung
Sie müssen dieses Feld nur angeben, wenn Sie eine CSV Datei als Datensatz verwenden.
Akzeptiert einen der folgenden Werte, um die Position der Spaltenüberschrift anzugeben:
Wichtig
Derzeit unterstützt Step Functions CSV Header mit bis zu 10 KiB.
FIRST_ROW
— Verwenden Sie diese Option, wenn die erste Zeile der Datei der Header ist.GIVEN
— Verwenden Sie diese Option, um den Header innerhalb der State-Machine-Definition anzugeben. Zum Beispiel, wenn Ihre CSV Datei die folgenden Daten enthält.1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...
Geben Sie das folgende JSON Array als CSV Header an.
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [
"userId"
,"movieId"
,"rating"
,"timestamp"
] } }
Tipp
In Workflow Studio finden Sie diese Option unter Zusätzliche Konfiguration im Feld Artikelquelle.
MaxItems
Beschränkt die Anzahl der Datenelemente, die an den
Map
Bundesstaat übergeben werden. Nehmen wir beispielsweise an, Sie stellen eine CSV Datei bereit, die 1000 Zeilen enthält, und geben einen Grenzwert von 100 an. Dann übergibt der Interpreter nur 100 Zeilen an denMap
Bundesstaat. DerMap
Status verarbeitet Elemente in sequentieller Reihenfolge, beginnend nach der Kopfzeile.Standardmäßig durchläuft der
Map
Status alle Elemente im angegebenen Datensatz.Anmerkung
Derzeit können Sie einen Grenzwert von bis zu 100.000.000 angeben. Im Status Distributed Map werden keine Elemente mehr gelesen, die diesen Grenzwert überschreiten.
Tipp
In Workflow Studio finden Sie diese Option unter Zusätzliche Konfiguration im Feld Elementquelle.
Alternativ können Sie in Ihrer Statuseingabe für Distributed Map einen Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar angeben. Dieser Pfad muss in eine positive Ganzzahl aufgelöst werden. Sie geben den Referenzpfad im
MaxItemsPath
Unterfeld an.Wichtig
Sie können entweder das
MaxItems
oder dasMaxItemsPath
Unterfeld angeben, aber nicht beide.
Resource
Die Amazon S3 API S3-Aktion, die Step Functions aufrufen muss, hängt vom angegebenen Datensatz ab.
Parameters (JSONPath only)
Ein JSON Objekt, das den Amazon S3 S3-Bucket-Namen und den Objektschlüssel angibt, in dem der Datensatz gespeichert ist.
Wichtig
Stellen Sie sicher, dass sich Ihre Amazon S3 S3-Buckets unter demselben AWS-Konto und AWS-Region Ihrem Zustandsmaschine befinden.
Beispiele für Datensätze
Sie können eine der folgenden Optionen als Ihren Datensatz angeben:
Wichtig
Step Functions benötigt die entsprechenden Berechtigungen für den Zugriff auf die Amazon S3 S3-Datensätze, die Sie verwenden. Informationen zu den IAM Richtlinien für die Datensätze finden Sie unter. IAMRichtlinien für Datensätze
Ein Status mit verteilter Map kann eine JSON Eingabe akzeptieren, die aus einem vorherigen Schritt im Workflow übergeben wurde. Diese Eingabe muss entweder ein Array sein oder ein Array innerhalb eines bestimmten Knotens enthalten. Um einen Knoten auszuwählen, der das Array enthält, können Sie das ItemsPath (JSONPathNur Karte)
Feld verwenden.
Um einzelne Elemente im Array zu verarbeiten, startet der Status Distributed Map eine untergeordnete Workflow-Ausführung für jedes Array-Element. Die folgenden Registerkarten zeigen Beispiele für die Eingabe, die an den Map
Status übergeben wurde, und für die entsprechende Eingabe für die Ausführung eines untergeordneten Workflows.
Anmerkung
Step Functions lässt das ItemReader
Feld weg, wenn es sich bei Ihrem Datensatz um ein JSON Array aus einem vorherigen Schritt handelt.
Ein Distributed Map-Status kann über die Objekte iterieren, die in einem Amazon S3 S3-Bucket gespeichert sind. Wenn die Workflow-Ausführung den Map
Status erreicht, ruft Step Functions die ListObjectsAPIV2-Aktion auf, die ein Array der Amazon S3 S3-Objektmetadaten zurückgibt. In diesem Array enthält jedes Element Daten, wie z. B. ETagund Key, für die im Bucket gespeicherten Daten.
Um einzelne Elemente im Array zu verarbeiten, startet der Status Distributed Map die Ausführung eines untergeordneten Workflows. Nehmen wir zum Beispiel an, dass Ihr Amazon S3 S3-Bucket 100 Bilder enthält. Dann enthält das nach dem Aufrufen der ListObjectsV2
API Aktion zurückgegebene Array 100 Elemente. Im Status Distributed Map werden dann 100 untergeordnete Workflow-Ausführungen gestartet, um jedes Array-Element zu verarbeiten.
Anmerkung
Derzeit enthält Step Functions auch ein Element für jeden Ordner, den Sie mit der Amazon S3 S3-Konsole in einem bestimmten Amazon S3 S3-Bucket erstellen. Dies führt zu einer zusätzlichen untergeordneten Workflow-Ausführung, die durch den Status Distributed Map gestartet wird. Um zu vermeiden, dass für den Ordner eine zusätzliche untergeordnete Workflow-Ausführung erforderlich ist, empfehlen wir, die AWS CLI zum Erstellen von Ordnern zu verwenden. Weitere Informationen finden Sie unter Amazon S3 S3-Befehle auf hoher Ebene im AWS Command Line Interface Benutzerhandbuch.
Step Functions benötigt die entsprechenden Berechtigungen für den Zugriff auf die Amazon S3 S3-Datensätze, die Sie verwenden. Informationen zu den IAM Richtlinien für die Datensätze finden Sie unter. IAMRichtlinien für Datensätze
Die folgenden Registerkarten zeigen Beispiele für die ItemReader
Feldsyntax und die Eingabe, die an die Ausführung eines untergeordneten Workflows für diesen Datensatz übergeben wurde.
Ein Distributed Map-Status kann eine JSON Datei, die in einem Amazon S3 S3-Bucket gespeichert ist, als Datensatz akzeptieren. Die JSON Datei muss ein Array enthalten.
Wenn die Workflow-Ausführung den Map
Status erreicht, ruft Step Functions die GetObjectAPIAktion zum Abrufen der angegebenen JSON Datei auf. Der Map
Status iteriert dann über jedes Element im Array und startet für jedes Element eine untergeordnete Workflow-Ausführung. Wenn Ihre JSON Datei beispielsweise 1000 Array-Elemente enthält, startet der Map
Status 1000 untergeordnete Workflow-Ausführungen.
Anmerkung
Die Ausführungseingabe, die zum Starten einer untergeordneten Workflow-Ausführung verwendet wird, darf 256 KiB nicht überschreiten. Step Functions unterstützt jedoch das Lesen eines Elements mit einer Größe von bis zu 8 MB aus einer CSV JSON OR-Datei, wenn Sie dann das optionale
ItemSelector
Feld anwenden, um die Größe des Elements zu reduzieren.Derzeit unterstützt Step Functions 10 GB als maximale Größe einer einzelnen Datei in einem Amazon S3 S3-Inventarbericht. Step Functions kann jedoch mehr als 10 GB verarbeiten, wenn jede einzelne Datei weniger als 10 GB groß ist.
Step Functions benötigt die entsprechenden Berechtigungen für den Zugriff auf die Amazon S3 S3-Datensätze, die Sie verwenden. Informationen zu den IAM Richtlinien für die Datensätze finden Sie unter. IAMRichtlinien für Datensätze
Die folgenden Registerkarten zeigen Beispiele für die ItemReader
Feldsyntax und die Eingabe, die an die Ausführung eines untergeordneten Workflows für diesen Datensatz übergeben wurde.
Stellen Sie sich für dieses Beispiel vor, Sie haben eine JSON Datei mit dem Namen
. Sie haben diese Datei in einem Präfix gespeichert, das factcheck.json
in einem Amazon S3 S3-Bucket benannt ist. Das Folgende ist ein Beispiel für den JSON Datensatz.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"
},
...
]
Ein Distributed Map-Status kann eine CSV Datei, die in einem Amazon S3 S3-Bucket gespeichert ist, als Datensatz akzeptieren. Wenn Sie eine CSV Datei als Datensatz verwenden, müssen Sie eine CSV Spaltenüberschrift angeben. Hinweise zum Angeben einer CSV Kopfzeile finden Sie unterInhalt des ItemReader Felds.
Step Functions analysiert CSV Dateien auf der Grundlage der folgenden Regeln:
-
Kommas (,) sind ein Trennzeichen, das Felder voneinander trennt.
-
Zeilenumbrüche sind ein Trennzeichen, das Datensätze voneinander trennt.
-
Felder werden als Zeichenketten behandelt. Verwenden Sie für Datentypkonvertierungen die
States.StringToJson
systeminterne Funktion in. ItemSelector (Karte) -
Doppelte Anführungszeichen (“ „) sind nicht erforderlich, um Zeichenketten einzuschließen. Zeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind, können jedoch Kommas und Zeilenumbrüche enthalten, ohne als Datensatztrennzeichen zu dienen.
-
Sie können doppelte Anführungszeichen beibehalten, indem Sie sie wiederholen.
-
Wenn die Anzahl der Felder in einer Zeile geringer ist als die Anzahl der Felder in der Kopfzeile, stellt Step Functions leere Zeichenketten für die fehlenden Werte bereit.
-
Wenn die Anzahl der Felder in einer Zeile größer ist als die Anzahl der Felder in der Kopfzeile, überspringt Step Functions die zusätzlichen Felder.
Weitere Informationen darüber, wie Step Functions eine CSV Datei analysiert, finden Sie unterExample of parsing an input CSV file.
Wenn die Workflow-Ausführung den Map
Status erreicht, ruft Step Functions die GetObjectAPIAktion zum Abrufen der angegebenen CSV Datei auf. Der Map
Status iteriert dann über jede Zeile in der CSV Datei und startet eine untergeordnete Workflow-Ausführung, um die Elemente in jeder Zeile zu verarbeiten. Nehmen wir beispielsweise an, Sie geben eine CSV Datei mit 100 Zeilen als Eingabe an. Dann übergibt der Interpreter jede Zeile an den Map
Status. Der Map
Status verarbeitet Elemente in serieller Reihenfolge, beginnend nach der Kopfzeile.
Anmerkung
Die Ausführungseingabe, die zum Starten einer untergeordneten Workflow-Ausführung verwendet wird, darf 256 KiB nicht überschreiten. Step Functions unterstützt jedoch das Lesen eines Elements mit einer Größe von bis zu 8 MB aus einer CSV JSON OR-Datei, wenn Sie dann das optionale
ItemSelector
Feld anwenden, um die Größe des Elements zu reduzieren.Derzeit unterstützt Step Functions 10 GB als maximale Größe einer einzelnen Datei in einem Amazon S3 S3-Inventarbericht. Step Functions kann jedoch mehr als 10 GB verarbeiten, wenn jede einzelne Datei weniger als 10 GB groß ist.
Step Functions benötigt die entsprechenden Berechtigungen für den Zugriff auf die Amazon S3 S3-Datensätze, die Sie verwenden. Informationen zu den IAM Richtlinien für die Datensätze finden Sie unter. IAMRichtlinien für Datensätze
Die folgenden Registerkarten zeigen Beispiele für die ItemReader
Feldsyntax und die Eingabe, die an die Ausführung eines untergeordneten Workflows für diesen Datensatz übergeben wurde.
Ein Distributed Map-Status kann eine Amazon S3 S3-Inventarmanifestdatei, die in einem Amazon S3 S3-Bucket gespeichert ist, als Datensatz akzeptieren.
Wenn die Workflow-Ausführung den Map
Status erreicht, ruft Step Functions die GetObjectAPIAktion zum Abrufen der angegebenen Amazon S3 S3-Inventarmanifestdatei auf. Der Map
Status iteriert dann über die Objekte im Inventar, um ein Array von Amazon S3 S3-Inventarobjekt-Metadaten zurückzugeben.
Anmerkung
Derzeit unterstützt Step Functions 10 GB als maximale Größe einer einzelnen Datei in einem Amazon S3 S3-Inventarbericht. Step Functions kann jedoch mehr als 10 GB verarbeiten, wenn jede einzelne Datei weniger als 10 GB groß ist.
Step Functions benötigt die entsprechenden Berechtigungen für den Zugriff auf die Amazon S3 S3-Datensätze, die Sie verwenden. Informationen zu den IAM Richtlinien für die Datensätze finden Sie unter. IAMRichtlinien für Datensätze
Im Folgenden finden Sie ein Beispiel für eine Inventardatei im CSV Format. Diese Datei enthält die Objekte mit den Namen csvDataset
undimageDataset
, die in einem benannten Amazon S3 S3-Bucket gespeichert sindamzn-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"
...
Wichtig
Derzeit unterstützt Step Functions keinen benutzerdefinierten Amazon S3 S3-Inventarbericht als Datensatz. Sie müssen auch sicherstellen, dass das Ausgabeformat Ihres Amazon S3 S3-Inventarberichts lautetCSV. Weitere Informationen zu Amazon S3 S3-Inventaren und deren Einrichtung finden Sie unter Amazon S3 S3-Inventar im Amazon S3 S3-Benutzerhandbuch.
Das folgende Beispiel für eine Inventar-Manifestdatei zeigt die CSV Header für die Metadaten des Inventarobjekts.
{
"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"
} ]
}
Die folgenden Registerkarten zeigen Beispiele für die ItemReader
Feldsyntax und die Eingabe, die an die Ausführung eines untergeordneten Workflows für diesen Datensatz übergeben wurde.
IAMRichtlinien für Datensätze
Wenn Sie Workflows mit der Step Functions-Konsole erstellen, kann Step Functions automatisch IAM Richtlinien auf der Grundlage der Ressourcen in Ihrer Workflow-Definition generieren. Diese Richtlinien beinhalten die geringsten Rechte, die erforderlich sind, damit die Zustandsmaschinen-Rolle die StartExecution
API Aktion für den Status Distributed Map aufrufen kann. Diese Richtlinien beinhalten auch die Step Functions mit den geringsten Rechten, die für den Zugriff auf AWS Ressourcen wie Amazon S3 S3-Buckets und -Objekte sowie Lambda-Funktionen erforderlich sind. Wir empfehlen dringend, dass Sie nur die Berechtigungen in Ihre IAM Richtlinien aufnehmen, die erforderlich sind. Wenn Ihr Workflow beispielsweise einen Map
Status im Modus „Verteilt“ umfasst, beschränken Sie Ihre Richtlinien auf den spezifischen Amazon S3 S3-Bucket und -Ordner, der Ihren Datensatz enthält.
Wichtig
Wenn Sie einen Amazon S3 S3-Bucket und ein Objekt oder ein Präfix mit einem Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Distributed Map-Statuseingabe angeben, stellen Sie sicher, dass Sie die IAM Richtlinien für Ihren Workflow aktualisieren. Beschränken Sie die Richtlinien auf die Bucket- und Objektnamen, zu denen der Pfad zur Laufzeit aufgelöst wird.
Die folgenden IAM Richtlinienbeispiele gewähren die geringsten Rechte, die für den Zugriff auf Ihre Amazon S3 S3-Datensätze mithilfe von ListObjectsV2 und GetObjectAPIAktionen erforderlich sind.
Beispiel IAMRichtlinie für Amazon S3 S3-Objekt als Datensatz
Das folgende Beispiel zeigt eine IAM Richtlinie, die die geringsten Rechte für den Zugriff auf die Objekte gewährt, die
in einem Amazon S3 S3-Bucket mit dem Namen organisiert sindprocessImages
.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
"
]
}
}
}
]
}
Beispiel IAMRichtlinie für eine CSV Datei als Datensatz
Das folgende Beispiel zeigt eine IAM Richtlinie, die die geringsten Rechte für den Zugriff auf eine CSV Datei mit dem Namen gewährt
.ratings.csv
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
/csvDataset
/ratings.csv
"
]
}
]
}
Beispiel IAMRichtlinie für ein Amazon S3 S3-Inventar als Datensatz
Das folgende Beispiel zeigt eine IAM Richtlinie, die die geringsten Rechte für den Zugriff auf einen Amazon S3 S3-Inventarbericht gewährt.
{
"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/*"
]
}
]
}