Batching und Parallelität von Amazon EventBridge Pipes - Amazon EventBridge

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.

Batching und Parallelität von Amazon EventBridge Pipes

Batching-Verhalten

EventBridge Pipes unterstützt das Batching von der Quelle bis hin zu Zielen, die dies unterstützen. Darüber hinaus wird das Batching bis zur Anreicherung für und unterstützt. AWS Lambda AWS Step Functions Da verschiedene Services unterschiedliche Ebenen der Stapelverarbeitung unterstützen, können Sie eine Pipe nicht mit einer größeren Stapelgröße konfigurieren, als das Ziel unterstützt. Amazon-Kinesis-Streamquellen unterstützen beispielsweise eine maximale Stapelgröße von 10 000 Datensätzen, Amazon Simple Queue Service unterstützt jedoch maximal 10 Nachrichten pro Stapel als Ziel. Daher kann eine Pipe von einem Kinesis-Stream zu einer SQS Amazon-Warteschlange eine maximal konfigurierte Batchgröße auf der Quelle von 10 haben.

Wenn Sie eine Pipe mit einer Anreicherung oder einem Ziel konfigurieren, das die Stapelverarbeitung nicht unterstützt, können Sie die Stapelverarbeitung in der Quelle nicht aktivieren.

Wenn Batching für die Quelle aktiviert ist, werden Arrays von JSON Datensätzen durch die Pipe geleitet und dann dem Batch einer unterstützten Anreicherung oder API eines unterstützten Ziels zugeordnet. Eingangstransformatoren werden separat auf jeden einzelnen JSON Datensatz im Array angewendet, nicht auf das Array als Ganzes. Beispiele für diese Arrays finden Sie unter Amazon EventBridge Pipes-Quellen und wählen Sie eine bestimmte Quelle aus. Pipes verwenden den Stapel API für die unterstützte Anreicherung oder das unterstützte Ziel, auch wenn die Batchgröße 1 ist. Wenn die Anreicherung oder das Ziel keinen Batch hat, API aber vollständige JSON Payloads wie Lambda und Step Functions empfängt, wird das gesamte JSON Array in einer Anfrage gesendet. Die Anfrage wird als JSON Array gesendet, auch wenn die Batchgröße 1 ist.

Wenn eine Pipe für das Batching an der Quelle konfiguriert ist und das Ziel Batching unterstützt, können Sie ein Array von JSON Elementen aus Ihrer Anreicherung zurückgeben. Dieses Array kann ein kürzeres oder längeres Array als die ursprüngliche Quelle enthalten. Wenn das Array jedoch größer als die vom Ziel unterstützte Stapelgröße ist, ruft die Pipe das Ziel nicht auf.

Unterstützte stapelbare Ziele

Ziel Maximale Stapelgröße
CloudWatch Logs 10.000
EventBridge Event-Bus 10
Firehose-Stream 500
Kinesis-Stream 500
Lambda-Funktion Kundendefiniert
Step-Functions-Zustandsautomat Kundendefiniert
SNSAmazon-Thema 10
SQSAmazon-Warteschlange 10

Die folgenden Anreicherungen und Ziele erhalten die vollständige Ereignisnutzlast des Stapels zur Verarbeitung und sind durch die Gesamtgröße der Nutzlast des Ereignisses und nicht durch die Größe des Stapels eingeschränkt:

  • Step-Functions-Zustandsautomat (262144 Zeichen)

  • Lambda-Funktion (6 MB)

Teilweiser Stapelfehler

Für Amazon SQS - und Stream-Quellen wie Kinesis und DynamoDB unterstützt EventBridge Pipes die teilweise Batch-Fehlerbehandlung von Zielausfällen. Wenn das Ziel Batching unterstützt und nur ein Teil des Batches erfolgreich ist, EventBridge wird automatisch erneut versucht, den Rest der Payload zu stapeln. Bei den am stärksten up-to-date angereicherten Inhalten erfolgt dieser Wiederholungsversuch über die gesamte Pipe, einschließlich des erneuten Aufrufs aller konfigurierten Anreicherungen.

Die Behandlung teilweiser Stapelfehler bei der Anreicherung wird nicht unterstützt.

Für Lambda- und Step-Functions-Ziele können Sie auch einen Teilfehler angeben, indem Sie eine Nutzlast mit definierter Struktur aus dem Ziel zurückgeben. Dies weist auf Ereignisse hin, die erneut versucht werden müssen.

Beispiel für eine Nutzlaststruktur bei einem Teilfehler

{ "batchItemFailures": [ { "itemIdentifier": "id2" }, { "itemIdentifier": "id4" } ]

In diesem Beispiel entspricht die itemIdentifier der ID der von Ihrem Ziel verarbeiteten Ereignisse aus ihrer ursprünglichen Quelle. Für Amazon SQS ist dies dermessageId. Für Kinesis und DynamoDB ist dies die eventID. Damit EventBridge Pipes partielle Batchfehler von den Zielen angemessen behandeln kann, müssen diese Felder in jeder Array-Nutzlast enthalten sein, die durch die Anreicherung zurückgegeben wird.

Verhalten des Durchsatzes und der Gleichzeitigkeit

Jedes Ereignis oder jeder Ereignisstapel, der von einer Pipe empfangen und zu einer Anreicherung oder einem Ziel weitergeleitet wird, wird als Pipe-Ausführung betrachtet. Eine Pipe im Status STARTED fragt kontinuierlich Ereignisse aus der Quelle ab und skaliert dabei je nach verfügbarem Backlog und konfigurierten Einstellungen der Stapelverarbeitung nach oben oder unten.

Informationen zu Kontingenten für gleichzeitige Pipe-Ausführungen und zur Anzahl der Pipes pro Konto und Region finden Sie unter EventBridge Leitet Quoten weiter.

Standardmäßig wird eine einzelne Pipe je nach Quelle auf die folgende maximale Anzahl gleichzeitiger Ausführungen skaliert:

  • DynamoDB – Die gleichzeitigen Ausführungen können bis zur Anzahl des in der Pipe konfigurierten ParallelizationFactor multipliziert mit der Anzahl der Shards im Stream ansteigen.

  • Apache Kafka – Die gleichzeitigen Ausführungen können bis zur Anzahl der Partitionen im Thema steigen, bis zu 1000.

  • Kinesis – Die gleichzeitigen Ausführungen können bis zur Anzahl des in der Pipe konfigurierten ParallelizationFactor multipliziert mit der Anzahl der Shards im Stream ansteigen.

  • Amazon MQ – 5

  • Amazon SQS — 1250

Wenn Sie höhere maximale Abfragedurchsätze oder Gleichzeitigkeitslimits benötigen, wenden Sie sich an den Support.

Anmerkung

Die Ausführungslimits gelten nach bestem Bemühen um Sicherheit. Obwohl das Abfragen nicht unter diese Werte gedrosselt wird, kann es passieren, dass eine Pipe oder ein Konto höher als diese empfohlenen Werte gesteigert wird.

Die Pipe-Ausführungen sind auf maximal 5 Minuten begrenzt, einschließlich der Anreicherung und Zielverarbeitung. Dieses Limit kann derzeit nicht erhöht werden.

Die Parallelität von Pipes mit streng geordneten Quellen (wie SQS FIFO Amazon-Warteschlangen, Kinesis- und DynamoDB Streams oder Apache Kafka-Themen) wird durch die Konfiguration der Quelle weiter eingeschränkt, z. B. durch die Anzahl der Nachrichtengruppen IDs für FIFO Warteschlangen oder die Anzahl der Shards für Kinesis-Warteschlangen. Da die Reihenfolge innerhalb dieser Einschränkungen strikt garantiert ist, kann eine Pipe mit einer geordneten Quelle diese Gleichzeitigkeitslimits nicht überschreiten.