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.
ItemReader (Karte)
Das ItemReader Feld ist ein JSON-Objekt, das einen Datensatz und seinen Speicherort 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 durch Text getrennten 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",
        "VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
    }
}Beachten Sie, dass dies im folgenden JSONatabasierten Workflow durch Parameters Argumente ersetzt wird.
"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"
    }
}
    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.
Resource- 
                
Die Amazon S3 S3-API-Integrationsaktion, die Step Functions verwenden wird, z. B.
arn:aws:states:::s3:getObject Arguments (JSONata) orParameters(JSONPath)- 
                
Ein JSON-Objekt, das den Amazon S3 S3-Bucket-Namen und den Objektschlüssel angibt, in dem der Datensatz gespeichert ist.
Wenn für den Bucket die Versionierung aktiviert ist, können Sie auch die Amazon S3 S3-Objektversion angeben.
 ReaderConfig- 
          
Ein JSON-Objekt, das die folgenden Details spezifiziert:
- 
                            
InputTypeAkzeptiert einen der folgenden Werte:
CSV,JSON,JSONL,PARQUET,MANIFEST.Gibt den Typ der Amazon S3 S3-Datenquelle an, z. B. eine durch Text getrennte Datei (
CSV), ein Objekt, eine JSON-Datei, JSON-Zeilen, eine Parquet-Datei, ein Athena-Manifest oder eine Amazon S3 S3-Inventarliste. In Workflow Studio können Sie einen Eingabetyp aus der S3-Elementquelle auswählen.Die meisten Eingabetypen, die den
S3GetObjectAbruf verwenden, unterstützenExpectedBucketOwnerauchVersionIdAD-Felder in ihren Parametern. Parquet-Dateien sind die einzige Ausnahme, die nicht unterstütztVersionIdwird.Eingabedateien unterstützen die folgenden externen Komprimierungstypen: GZIP, ZSTD.
Beispieldateinamen:
myObject.jsonl.gzund.myObject.csv.zstdHinweis: Parquet-Dateien sind binäre Dateien, die intern komprimiert werden. GZIP-, ZSTD- und Snappy-Komprimierung werden unterstützt.
 - 
                            
TransformationOptional. Der Wert ist entweder oder oder.
NONELOAD_AND_FLATTENFalls nicht angegeben,
NONEwird davon ausgegangen. Wenn auf gesetztLOAD_AND_FLATTEN, müssen Sie auch einstellenInputType.Standardverhalten: Map iteriert über Metadatenobjekte, die von Aufrufen von zurückgegeben wurden.
S3:ListObjectsV2Wenn diese Option auf gesetzt istLOAD_AND_FLATTEN, liest und verarbeitet Map die tatsächlichen Datenobjekte, auf die in der Ergebnisliste verwiesen wird. - 
                
ManifestTypeOptional. Der Wert ist entweder oder
ATHENA_DATAoderS3_INVENTORY.Hinweis: Wenn auf gesetzt
S3_INVENTORY, müssen Sie nicht zusätzlich angeben,InputTypeda davon ausgegangen wirdCSV, dass der Typ - 
              
CSVDelimiterSie können dieses Feld angeben, wenn
InputTypeesCSVoder istMANIFEST.Akzeptiert einen der folgenden Werte:
COMMA(Standard),PIPE,SEMICOLON,SPACE,TAB.Anmerkung
Mit
CSVDelimiterdiesem FeldItemReaderkönnen Dateien verarbeitet werden, die durch andere Zeichen als ein Komma getrennt sind. Verweise auf „CSV-Dateien“ umfassen auch Dateien, die alternative Trennzeichen verwenden, die im Feld angegeben sind.CSVDelimiter - 
              
CSVHeaderLocationSie können dieses Feld angeben, wenn
InputTypees oder istCSV.MANIFESTAkzeptiert einen der folgenden Werte, um die Position der Spaltenüberschrift anzugeben:
- 
                  
FIRST_ROW— Verwenden Sie diese Option, wenn die erste Zeile der Datei die Kopfzeile ist. - 
                  
GIVEN— Verwenden Sie diese Option, um den Header innerhalb der State-Machine-Definition anzugeben.Zum Beispiel, wenn Ihre Datei die folgenden Daten enthält.
1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...Sie könnten das folgende JSON-Array als CSV-Header angeben:
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": ["userId","movieId","rating","timestamp"] } } 
Größe des CSV-Headers
Step Functions unterstützt Header von bis zu 10 KiB für textgetrennte Dateien.
 - 
                  
 - 
              
MaxItemsStandardmäßig durchläuft der
MapStatus alle Elemente im angegebenen Datensatz. Durch diese EinstellungMaxItemskönnen Sie die Anzahl der Datenelemente begrenzen, die an denMapStatus übergeben werden. Wenn Sie beispielsweise eine durch Text getrennte Datei bereitstellen, die 1.000 Zeilen enthält, und Sie einen Grenzwert von 100 festlegen, übergibt der Interpreter nur 100 Zeilen an den Status Distributed Map. DerMapStatus verarbeitet Elemente in sequentieller Reihenfolge, beginnend nach der Kopfzeile.Für JSONPathWorkflows können Sie einen Referenzpfad zu einem Schlüssel-Wert-Paar in der Statuseingabe verwenden
MaxItemsPath, das in eine Ganzzahl aufgelöst wird. Beachten Sie, dass Sie entwederMaxItemsoder angeben könnenMaxItemsPath, aber nicht beide.Anmerkung
Sie können einen Grenzwert von bis zu 100.000.000 angeben, nach dessen Ablauf das Lesen von Elementen
Distributed Mapbeendet wird. 
 - 
                            
 
Anforderungen für Konto und Region
Ihre Amazon S3 S3-Buckets müssen sich im selben AWS-Konto und AWS-Region wie Ihr Zustandsmaschine befinden.
Beachten Sie, dass Ihr Zustandsmaschine zwar auf Dateien in Buckets zugreifen kann, die sich in verschiedenen AWS-Konten Buckets befinden AWS-Region, Step Functions jedoch nur das Auflisten von Objekten in Amazon S3 S3-Buckets unterstützt, die sich sowohl in derselben AWS-Region als auch in derselben AWS-Konto Zustandsmaschine befinden.
Verarbeitung verschachtelter Datensätze (aktualisiert am 11. September 2025)
Mit dem neuen Transformation Parameter können Sie einen Wert von angeben LOAD_AND_FLATTEN und die Map liest die tatsächlichen Datenobjekte, auf die in der Ergebnisliste eines Aufrufs von verwiesen wird. S3:ListObjectsV2 
Vor dieser Version mussten Sie verschachtelte Distributed Maps erstellen, um die Metadaten abzurufen und dann die eigentlichen Daten zu verarbeiten. In der ersten Map wurden die von zurückgegebenen Metadaten iteriert S3:ListObjectsV2 und untergeordnete Workflows aufgerufen. Eine weitere Map in jedem Child State Machine würde die tatsächlichen Daten aus einzelnen Dateien lesen. Mit der Transformationsoption können Sie beide Schritte gleichzeitig ausführen.
Stellen Sie sich vor, Sie möchten ein tägliches Audit der letzten 24 Protokolldateien durchführen, die Ihr System stündlich erstellt und in Amazon S3 speichert. Ihr Distributed Map-Status kann die Protokolldateien mit S3:ListObjectsV2 auflisten und dann entweder über die Metadaten jedes Objekts iterieren oder er kann jetzt die tatsächlichen Datenobjekte laden und analysieren, die in Ihrem Amazon S3 S3-Bucket gespeichert sind.
Mit dieser LOAD_AND_FLATTEN Option können Sie die Skalierbarkeit erhöhen, die Anzahl der geöffneten Map-Runs reduzieren und mehrere Objekte gleichzeitig verarbeiten. Athena- und Amazon EMR-Jobs generieren in der Regel Ausgaben, die mit der neuen Konfiguration verarbeitet werden können. 
Im Folgenden finden Sie ein Beispiel für die Parameter in einer ItemReader Definition: 
{ "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 %}" } }, ... } }
Beispiele für Datensätze
Sie können eine der folgenden Optionen als Ihren Datensatz angeben:
Anmerkung
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. IAM-Richtlinienempfehlungen für Datensätze
Ein Distributed-Map-Status kann eine JSON-Eingabe akzeptieren, die aus einem vorherigen Schritt im Workflow übergeben wurde.
Die Eingabe kann ein JSON-Array, ein JSON-Objekt oder ein Array innerhalb eines Knotens eines JSON-Objekts sein.
Step Functions iteriert direkt über die Elemente eines Arrays oder die Schlüssel-Wert-Paare eines JSON-Objekts.
Um einen bestimmten Knoten auszuwählen, der ein Array aus einem JSON-Objekt enthält, können Sie den ItemsPath ( JSONPath Nur Karte) oder einen  JSONata  Ausdruck im Items Feld für Bundesstaaten verwenden.  JSONata  
Um einzelne Elemente zu verarbeiten, startet der Status Distributed Map für jedes Element eine untergeordnete Workflow-Ausführung. Die folgenden Registerkarten zeigen Beispiele für die an den Map Status übergebenen Eingaben und die entsprechenden Eingaben für die Ausführung eines untergeordneten Workflows.
Anmerkung
Das ItemReader Feld wird nicht benötigt, wenn es sich bei Ihrem Datensatz um JSON-Daten 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 ListObjectsV2-API-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 tatsächlichen Daten, die im Bucket gespeichert sind. 
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 Metadatenelemente. Im Status Distributed Map werden dann 100 untergeordnete Workflow-Ausführungen gestartet, um jedes Element zu verarbeiten.
Um Datenobjekte direkt und ohne verschachtelte Workflows zu verarbeiten, können Sie die Transformationsoption LOAD_AND_FLATTEN wählen, um Elemente direkt zu verarbeiten.
Anmerkung
- 
              
Step Functions enthält auch ein Element für jeden Ordner, der mit der Amazon S3 S3-Konsole im Amazon S3 S3-Bucket erstellt wurde. Die Ordnerelemente führen dazu, dass zusätzliche untergeordnete Workflow-Ausführungen gestartet werden.
Um zu vermeiden, dass für jeden Ordner zusätzliche untergeordnete Workflow-Ausführungen erstellt werden, 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. IAM-Richtlinienempfehlungen 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.
Dank der verbesserten Unterstützung für S3 ListObjects V2 als Eingabequelle in Distributed Map können Ihre Zustandsmaschinen mehrere Datenobjekte direkt aus Amazon S3 S3-Buckets lesen und verarbeiten, sodass keine verschachtelten Maps zur Verarbeitung der Metadaten erforderlich sind!
Mit dieser LOAD_AND_FLATTEN Option macht Ihr State Machine Folgendes:
Lesen Sie den tatsächlichen Inhalt jedes Objekts, das per Amazon S3
ListObjectsV2S3-Aufruf aufgelistet wurde.Analysieren Sie den Inhalt anhand von InputType (CSV, JSON, JSONL, Parquet).
Erstellen Sie Elemente aus dem Dateiinhalt (Zeilen/Datensätze) und nicht aus Metadaten.
Mit der Transformationsoption benötigen Sie keine verschachtelten verteilten Maps mehr, um die Metadaten zu verarbeiten. Die Verwendung der Option LOAD_AND_FLATTEN erhöht die Skalierbarkeit, reduziert die Anzahl der aktiven Kartenläufe und verarbeitet mehrere Objekte gleichzeitig.
Die folgende Konfiguration zeigt die Einstellung für: ItemReader
"ItemReader": {
   "Resource": "arn:aws:states:::s3:listObjectsV2",
   "ReaderConfig": {
      "InputType": "JSON",
      "Transformation": "LOAD_AND_FLATTEN"
   },
   "Arguments": {
      "Bucket": "S3_BUCKET_NAME",
      "Prefix": "S3_BUCKET_PREFIX"
   }
}Empfehlung für das Bucket-Präfix
Wir empfehlen, Ihrem Präfix einen abschließenden Schrägstrich hinzuzufügen. Wenn Sie beispielsweise Daten mit dem Präfix von auswählenfolder1, verarbeitet Ihre Zustandsmaschine sowohl als auchfolder1/myData.csv. folder10/myData.csv Bei folder1/ der Verwendung wird ausschließlich ein Ordner verarbeitet.
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 oder ein JSON-Objekt enthalten.
Wenn die Workflow-Ausführung den Map Status erreicht, ruft Step Functions die GetObjectAPI-Aktion auf, um die angegebene JSON-Datei abzurufen. 
Wenn die JSON-Datei eine verschachtelte Objektstruktur enthält, können Sie den spezifischen Knoten mit Ihrem Datensatz mit einem auswählen. ItemsPointer Die folgende Konfiguration würde beispielsweise eine verschachtelte Liste von ausgewählten Produkten im Inventar extrahieren.
"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" } }
Der Map Status wiederholt dann 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 durch Text getrennten Datei, JSON- oder JSON-Zeilendatei, wenn Sie anschließend das optionale
ItemSelectorFeld anwenden, um die Größe des Elements zu reduzieren. - 
              
Step Functions unterstützt 10 GB als maximale Größe einer einzelnen Datei in Amazon S3.
 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. IAM-Richtlinienempfehlungen 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 JSON Lines-Datei, die in einem Amazon S3 S3-Bucket gespeichert ist, als Datensatz akzeptieren.
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 durch Text getrennten Datei, JSON- oder JSON-Zeilendatei, wenn Sie anschließend das optionale
ItemSelectorFeld anwenden, um die Größe des Elements zu reduzieren. - 
              
Step Functions unterstützt 10 GB als maximale Größe einer einzelnen Datei in Amazon S3.
 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. IAM-Richtlinienempfehlungen 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 Lines-Datei mit dem Namen. Sie haben diese Datei in einem Präfix gespeichert, das factcheck.jsonl in einem Amazon S3 S3-Bucket benannt ist. Das Folgende ist ein Beispiel für den Inhalt der Datei.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"}Anmerkung
Mit CSVDelimiter diesem Feld ItemReader können Dateien verarbeitet werden, die durch andere Zeichen als ein Komma getrennt sind. Verweise auf „CSV-Dateien“ umfassen auch Dateien, die alternative Trennzeichen verwenden, die im Feld angegeben sind. CSVDelimiter
Ein Distributed Map-Status kann eine durch Text getrennte Datei, die in einem Amazon S3 S3-Bucket gespeichert ist, als Datensatz akzeptieren. Wenn Sie eine durch Text getrennte Datei als Datensatz verwenden, müssen Sie eine Spaltenüberschrift angeben. Hinweise zum Angeben einer Kopfzeile finden Sie unter. Inhalt des ItemReader Felds
Step Functions analysiert textgetrennte Dateien auf der Grundlage der folgenden Regeln:
- 
          
Das Trennzeichen, das Felder voneinander trennt, wird durch in angegeben.
CSVDelimiterReaderConfig Das Trennzeichen ist standardmäßig auf.COMMA - 
            
Zeilenumbrüche sind ein Trennzeichen, das Datensätze voneinander trennt.
 - 
            
Felder werden als Zeichenketten behandelt. Verwenden Sie für Datentypkonvertierungen die
States.StringToJsonsysteminterne 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.
 - 
            
Backslashes (\) sind eine weitere Möglichkeit, Sonderzeichen zu maskieren. Backslashes funktionieren nur mit anderen Backslashes, doppelten Anführungszeichen und dem konfigurierten Feldtrennzeichen wie Komma oder Pipe. Ein umgekehrter Schrägstrich, gefolgt von einem beliebigen anderen Zeichen, wird stillschweigend entfernt.
 - 
            
Sie können umgekehrte Schrägstriche beibehalten, indem Sie sie wiederholen. Beispiel:
path,size C:\\Program Files\\MyApp.exe,6534512 - 
            
Backslashes, die doppelte Anführungszeichen (
\") umgehen, funktionieren nur, wenn sie paarweise eingefügt werden. Wir empfehlen daher, doppelte Anführungszeichen zu maskieren, 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 durch Text getrennte Datei analysiert, finden Sie unter. Example of parsing an input CSV file
Wenn die Workflow-Ausführung den Map Status erreicht, ruft Step Functions die GetObjectAPI-Aktion auf, um die angegebene Datei abzurufen. Der Map Status iteriert dann über jede Zeile in der Datei und startet eine untergeordnete Workflow-Ausführung, um die Elemente in jeder Zeile zu verarbeiten. Nehmen wir beispielsweise an, Sie stellen eine durch Text getrennte Datei bereit, die 100 Zeilen als Eingabe enthält. Dann übergibt der Interpreter jede Zeile an den Status. Map 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 durch Text getrennten Datei, JSON- oder JSON-Zeilendatei, wenn Sie anschließend das optionale
ItemSelectorFeld anwenden, um die Größe des Elements zu reduzieren. - 
              
Step Functions unterstützt 10 GB als maximale Größe einer einzelnen Datei in Amazon S3.
 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. IAM-Richtlinienempfehlungen 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.
Parquet-Dateien können als Eingabequelle verwendet werden. Apache Parquet-Dateien, die in Amazon S3 gespeichert sind, ermöglichen eine effiziente, skalierbare, spaltenweise Datenverarbeitung.
Bei der Verwendung von Parquet-Dateien gelten die folgenden Bedingungen:
256 MB ist die maximale Zeilengruppengröße und 5 MB ist die maximale Fußzeilengröße. Wenn Sie Eingabedateien angeben, die eine der Grenzwerte überschreiten, gibt Ihr State Machine einen Laufzeitfehler zurück.
Das
VersionIdFeld wird nicht unterstützt fürInputType=Parquet.Interne GZIP-, ZSTD- und Snappy-Datenkomprimierung werden nativ unterstützt. Es sind keine Dateinamenerweiterungen erforderlich.
Im Folgenden finden Sie ein Beispiel für eine ASL-Konfiguration für die InputType Einstellung „Parquet“:
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "PARQUET" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "my-parquet-data-file-1.parquet" } }
Verarbeitung von Aufträgen in großem Umfang
Für extrem umfangreiche Jobs verwendet Step Functions viele Eingabeleser. Die Leser verschachteln ihre Bearbeitung, was dazu führen kann, dass einige Leser eine Pause einlegen, während andere weiterarbeiten. Intermittierender Fortschritt ist erwartetes Verhalten in großem Maßstab.
Sie können die aus den UNLOAD Abfrageergebnissen generierten Athena-Manifestdateien verwenden, um die Quelle der Datendateien für Ihren Kartenstatus anzugeben. Sie legen fest ManifestType InputType auf ATHENA_DATA und entweder CSVJSONL, oderParquet. 
Beim Ausführen einer UNLOAD Abfrage generiert Athena zusätzlich zu den eigentlichen Datenobjekten eine Datenmanifestdatei. Die Manifestdatei enthält eine strukturierte CSV-Liste der Datendateien. Sowohl das Manifest als auch die Datendateien werden an Ihrem Speicherort für Athena-Abfrageergebnisse in Amazon S3 gespeichert.
UNLOAD (<YOUR_SELECT_QUERY>) TO 'S3_URI_FOR_STORING_DATA_OBJECT' WITH (format = 'JSON')
Konzeptioneller Überblick über den Prozess, kurz gefasst:
- 
                            
Wählen Sie Ihre Daten mithilfe einer
UNLOADAbfrage in Athena aus einer Tabelle aus. - 
                            
Athena generiert eine Manifestdatei (CSV) und die Datenobjekte in Amazon S3.
 - 
                            
Konfigurieren Sie Step Functions, um die Manifestdatei zu lesen und die Eingabe zu verarbeiten.
 
Die Funktion kann die Ausgabeformate CSV, JSONL und Parquet von Athena verarbeiten. Alle Objekte, auf die in einer einzigen Manifestdatei verwiesen wird, müssen dasselbe Format haben.  InputType  Beachten Sie, dass durch eine UNLOAD Abfrage exportierte CSV-Objekte keinen Header in der ersten Zeile enthalten. Prüfen SieCSVHeaderLocation, ob Sie Spaltenüberschriften angeben müssen. 
Der Kartenkontext wird auch eine enthalten, $states.context.Map.Item.Source sodass Sie die Verarbeitung an die Datenquelle anpassen können.
Im Folgenden finden Sie eine Beispielkonfiguration eines für die Verwendung eines Athena-Manifests ItemReader konfigurierten:
"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" } }
Verwenden des Athena-Manifestmusters in Workflow Studio
Ein gängiges Szenario für die Datenverarbeitung wendet eine Map auf Daten an, die aus einer Athena UNLOAD-Abfrage stammen. Die Map ruft eine Lambda-Funktion auf, um jedes im Athena-Manifest beschriebene Element zu verarbeiten. Step Functions Workflow Studio bietet ein vorgefertigtes Muster, das all diese Komponenten zu einem Block kombiniert, den Sie auf Ihre State Machine-Leinwand ziehen können.
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 GetObjectAPI-Aktion auf, um die angegebene Amazon S3 S3-Inventarmanifestdatei abzurufen. 
Standardmäßig iteriert der Map Status dann über die Objekte im Inventar, um ein Array von Amazon S3 S3-Inventarobjekt-Metadaten zurückzugeben.
Wenn Sie S3_INVENTORY angeben, kann ManifestType es InputType nicht angegeben werden.
Anmerkung
- 
              
Step Functions unterstützt 10 GB als maximale Größe einer einzelnen Datei in einem Amazon S3 S3-Inventarbericht nach der Dekomprimierung. 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. IAM-Richtlinienempfehlungen 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
Step Functions unterstützt keinen benutzerdefinierten Amazon S3 S3-Inventarbericht als Datensatz.
Das Ausgabeformat Ihres Amazon S3 S3-Inventarberichts muss CSV sein.
Weitere Informationen zu Amazon S3 S3-Inventaren und deren Einrichtung finden Sie unter Amazon S3 S3-Inventar.
Das folgende Beispiel für eine Amazon S3 S3-Inventarmanifestdatei 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.
IAM-Richtlinienempfehlungen 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. Generierte Richtlinien beinhalten die geringsten Rechte, die erforderlich sind, damit die State-Machine-Rolle die StartExecution API-Aktion für den Distributed Map-Status aufrufen und auf AWS Ressourcen wie Amazon S3 S3-Buckets und -Objekte sowie Lambda-Funktionen zugreifen kann.
Wir empfehlen, nur die erforderlichen Berechtigungen in Ihre IAM-Richtlinien aufzunehmen. 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 Ihre Daten 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 Beispiele zeigen Techniken zur Gewährung der geringsten Rechte, die für den Zugriff auf Ihre Amazon S3 S3-Datensätze mithilfe der ListObjectsV2 - und GetObjectAPI-Aktionen erforderlich sind.
Beispiel Bedingung, die ein Amazon S3 S3-Objekt als Datensatz verwendet
Die folgende Bedingung gewährt die geringsten Rechte für den Zugriff auf Objekte in einem  Ordner eines Amazon S3 S3-Buckets.processImages
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
Beispiel eine CSV-Datei als Datensatz verwenden
Das folgende Beispiel zeigt die Aktionen, die für den Zugriff auf eine CSV-Datei mit dem Namen erforderlich sind.ratings.csv
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
Beispiel Verwenden eines Amazon S3 S3-Inventars als Datensatz
Im Folgenden werden Beispielressourcen für ein Amazon S3 S3-Inventarmanifest und Datendateien gezeigt.
"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/*" ]
Beispiel Verwenden von ListObjects V2 zur Beschränkung auf ein Ordnerpräfix
Bei Verwendung von ListObjectsV2 werden zwei Richtlinien generiert. Eine ist erforderlich, um das Auflisten des Inhalts des Buckets (ListBucket) zu ermöglichen, und eine andere Richtlinie ermöglicht das Abrufen von Objekten im Bucket (GetObject). 
Im Folgenden werden Beispielaktionen, Ressourcen und eine Bedingung gezeigt:
"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/*" ]
Beachten Sie, dass GetObject kein Gültigkeitsbereich angegeben wird und Sie einen Platzhalter (*) für das Objekt verwenden.