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.
Status verwalten und Daten transformieren
Erfahren Sie mehr über das Übergeben von Daten zwischen Zuständen mithilfe von Variablen und das Transformieren von Daten mit JSONata.
Das ItemBatcher
Feld ist ein JSON-Objekt, das angibt, dass eine Gruppe von Elementen in einer einzelnen untergeordneten Workflow-Ausführung verarbeitet werden soll. Verwenden Sie Batching, wenn Sie große CSV-Dateien oder JSON-Arrays oder große Gruppen von Amazon S3 S3-Objekten verarbeiten.
Das folgende Beispiel zeigt die Syntax des ItemBatcher
Felds. In der folgenden Syntax ist die maximale Anzahl von Elementen, die jede untergeordnete Workflow-Ausführung verarbeiten sollte, auf 100 festgelegt.
{
"ItemBatcher": {
"MaxItemsPerBatch": 100
}
}
Standardmäßig wird jedes Element in einer Datenmenge als Eingabe an einzelne untergeordnete Workflow-Ausführungen übergeben. Nehmen wir beispielsweise an, Sie geben eine JSON-Datei als Eingabe an, die das folgende Array enthält:
[
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
},
{
"verdict": "false",
"statement_date": "6/7/2022",
"statement_source": "television"
},
{
"verdict": "true",
"statement_date": "5/18/2016",
"statement_source": "news"
},
...
]
Für die angegebene Eingabe erhält jede untergeordnete Workflow-Ausführung ein Array-Element als Eingabe. Das folgende Beispiel zeigt die Eingabe einer untergeordneten Workflow-Ausführung:
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
}
Um die Leistung und die Kosten Ihres Verarbeitungsauftrags zu optimieren, wählen Sie eine Stapelgröße, bei der die Anzahl der Artikel gegen die Verarbeitungszeit der Artikel abgewogen wird. Wenn Sie Batching verwenden, fügt Step Functions die Elemente einem Items-Array hinzu. Anschließend wird das Array als Eingabe an jede untergeordnete Workflow-Ausführung übergeben. Das folgende Beispiel zeigt einen Stapel von zwei Elementen, die als Eingabe an eine untergeordnete Workflow-Ausführung übergeben wurden:
{
"Items": [
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
},
{
"verdict": "false",
"statement_date": "6/7/2022",
"statement_source": "television"
}
]
}
Tipp
Weitere Informationen zur Verwendung des ItemBatcher
Felds in Ihren Workflows finden Sie in den folgenden Tutorials und Workshops:
Felder zur Angabe der Artikelstapelung
Um Artikel zu stapeln, geben Sie die maximale Anzahl der zu stapelnden Artikel, die maximale Chargengröße oder beides an. Sie müssen einen dieser Werte angeben, um Artikel zu stapeln.
- Max. Anzahl Artikel pro Stapel
Gibt die maximale Anzahl von Elementen an, die jede untergeordnete Workflow-Ausführung verarbeitet. Der Interpreter begrenzt die Anzahl der im
Items
Array gebündelten Elemente auf diesen Wert. Wenn Sie sowohl eine Chargennummer als auch eine Größe angeben, reduziert der Interpreter die Anzahl der Elemente in einem Stapel, um zu verhindern, dass die angegebene Stapelgrößenbeschränkung überschritten wird.Wenn Sie diesen Wert nicht angeben, sondern einen Wert für die maximale Batchgröße angeben, verarbeitet Step Functions in jeder untergeordneten Workflow-Ausführung so viele Elemente wie möglich, ohne die maximale Batchgröße in Byte zu überschreiten.
Stellen Sie sich beispielsweise vor, Sie führen eine Ausführung mit einer JSON-Eingabedatei aus, die 1130 Knoten enthält. Wenn Sie für jeden Stapel einen maximalen Artikelwert von 100 angeben, erstellt Step Functions 12 Stapel. Davon enthalten 11 Stapel jeweils 100 Artikel, während der zwölfte Stapel die restlichen 30 Artikel enthält.
Alternativ können Sie die maximale Anzahl von Elementen für jeden Stapel als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Statuseingabe für Distributed Map angeben. Dieser Pfad muss in eine positive Ganzzahl aufgelöst werden.
Beispielsweise angesichts der folgenden Eingabe:
{
"maxBatchItems"
:500
}Sie können die maximale Anzahl der zu stapelnden Elemente mithilfe eines Referenzpfads (JSONPath nur) wie folgt angeben:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxItemsPerBatchPath"
:"$.maxBatchItems"
} ... ... } }Für JSONatabasierte Zustände können Sie auch einen JSONata Ausdruck angeben, der eine positive Ganzzahl ergibt.
Wichtig
Sie können entweder das
MaxItemsPerBatch
oder dasMaxItemsPerBatchPath (JSONPath only)
Unterfeld angeben, aber nicht beide.- Max. KiB pro Stapel
Gibt die maximale Größe eines Stapels in Byte an, bis zu 256 KiB. Wenn Sie sowohl eine maximale Chargennummer als auch eine maximale Stapelgröße angeben, reduziert Step Functions die Anzahl der Artikel in einem Stapel, um zu verhindern, dass die angegebene Stapelgrößenbeschränkung überschritten wird.
Alternativ können Sie die maximale Batchgröße als Referenzpfad zu einem vorhandenen Schlüssel-Wert-Paar in Ihrer Distributed Map-Statuseingabe angeben. Dieser Pfad muss in eine positive Ganzzahl aufgelöst werden.
Anmerkung
Wenn Sie Batching verwenden und keine maximale Batchgröße angeben, verarbeitet der Interpreter so viele Elemente, wie er verarbeiten kann, bis zu 256 KiB in jeder untergeordneten Workflow-Ausführung.
Beispielsweise angesichts der folgenden Eingabe:
{
"batchSize"
:131072
}Sie können die maximale Batchgröße mithilfe eines Referenzpfads wie folgt angeben:
{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": {
"MaxInputBytesPerBatchPath"
:"$.batchSize"
} ... ... } }Für JSONatabasierte Zustände können Sie auch einen JSONata Ausdruck angeben, der eine positive Ganzzahl ergibt.
Wichtig
Sie können entweder das
MaxInputBytesPerBatch
oder dasMaxInputBytesPerBatchPath
(JSONPath einzige) Unterfeld angeben, aber nicht beide.- Batch-Eingabe
Optional können Sie auch eine feste JSON-Eingabe angeben, die in jeden Batch aufgenommen werden soll, der an jede untergeordnete Workflow-Ausführung übergeben wird. Step Functions führt diese Eingabe mit der Eingabe für jede einzelne untergeordnete Workflow-Ausführung zusammen. Nehmen wir zum Beispiel die folgende feste Eingabe eines Datums der Faktenprüfung für eine Reihe von Elementen an:
"ItemBatcher": {
"BatchInput": {
"factCheck"
:"December 2022"
} }Jede untergeordnete Workflow-Ausführung erhält Folgendes als Eingabe:
{ "BatchInput": { "factCheck": "December 2022" }, "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, ... ] }
Bei JSONatabasierten Zuständen können Sie JSONata Ausdrücke direkt für JSON-Objekte oder -Arrays bereitstellen oder JSONata Ausdrücke innerhalb von JSON-Objekten oder -Arrays verwenden. BatchInput