Amazon DocumentDB DocumentDB-Ereignisse mit Lambda verarbeiten - AWS Lambda

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.

Amazon DocumentDB DocumentDB-Ereignisse mit Lambda verarbeiten

Sie können eine Lambda-Funktion verwenden, um Ereignisse in einem Änderungsstream von Amazon DocumentDB (mit MongoDB-Kompatibilität) zu verarbeiten, indem Sie einen Amazon-DocumentDB-Cluster als Ereignisquelle konfigurieren. Anschließend können Sie ereignisgesteuerte Workloads automatisieren, indem Sie Ihre Lambda-Funktion jedes Mal aufrufen, wenn sich Daten in Ihrem Amazon-DocumentDB-Cluster ändern.

Anmerkung

Lambda unterstützt nur die Versionen 4.0 und 5.0 von Amazon DocumentDB. Lambda unterstützt Version 3.6 nicht.

Für die Zuordnung von Ereignisquellen unterstützt Lambda außerdem nur Instance-basierte Cluster und regionale Cluster. Lambda unterstützt keine elastischen Cluster oder globalen Cluster. Diese Einschränkung gilt nicht, wenn Lambda als Client verwendet wird, um eine Verbindung mit Amazon DocumentDB herzustellen. Lambda kann eine Verbindung mit allen Clustertypen herstellen, um CRUD-Vorgänge auszuführen.

Lambda verarbeitet Ereignisse aus Amazon-DocumentDB-Änderungsstreams sequentiell in der Reihenfolge, in der sie ankommen. Aus diesem Grund kann Ihre Funktion jeweils nur einen Aufruf von DocumentDB gleichzeitig verarbeiten. Sie können Ihre Funktion anhand ihrer Gleichzeitigkeitsmetriken überwachen.

Warnung

Lambda-Ereignisquellenzuordnungen verarbeiten jedes Ereignis mindestens einmal, und es kann zu einer doppelten Verarbeitung von Datensätzen kommen. Um mögliche Probleme im Zusammenhang mit doppelten Ereignissen zu vermeiden, empfehlen wir Ihnen dringend, Ihren Funktionscode idempotent zu machen. Weitere Informationen finden Sie im Knowledge Center unter Wie mache ich meine Lambda-Funktion idempotent?. AWS

Beispiel für Amazon-DocumentDB-Ereignis

{ "eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03", "events": [ { "event": { "_id": { "_data": "0163eeb6e7000000090100000009000041e1" }, "clusterTime": { "$timestamp": { "t": 1676588775, "i": 9 } }, "documentKey": { "_id": { "$oid": "63eeb6e7d418cd98afb1c1d7" } }, "fullDocument": { "_id": { "$oid": "63eeb6e7d418cd98afb1c1d7" }, "anyField": "sampleValue" }, "ns": { "db": "test_database", "coll": "test_collection" }, "operationType": "insert" } } ], "eventSource": "aws:docdb" }

Weitere Informationen zu den Ereignissen in diesem Beispiel und den zugehörigen Formen finden Sie unter Änderungsereignisse auf der MongoDB-Dokumentationswebsite.

Voraussetzungen und Berechtigungen

Bevor Sie Amazon DocumentDB als Ereignisquelle für Ihre Lambda-Funktion verwenden können, beachten Sie die folgenden Voraussetzungen. Folgendes muss zutreffen:

  • Haben Sie einen vorhandenen Amazon DocumentDB-Cluster in derselben AWS-Konto und AWS-Region wie Ihre Funktion. Wenn Sie über keinen bestehenden Cluster verfügen, können Sie anhand der Anleitung in Erste Schritte mit Amazon DocumentDB im Amazon-DocumentDB-Entwicklerhandbuch einen erstellen. Alternativ dazu führen Sie die ersten Schritte in Tutorial: Verwendung AWS Lambda mit Amazon DocumentDB DocumentDB-Streams durch die Erstellung eines DocumentDB-Clusters mit allen erforderlichen Voraussetzungen.

  • Sie müssen Lambda den Zugriff auf die Ressourcen von Amazon Virtual Private Cloud (Amazon VPC) erlauben, die Ihrem Amazon-DocumentDB-Cluster zugeordnet sind. Weitere Informationen finden Sie unter Netzwerkkonfiguration.

  • Aktivieren Sie TLS in Ihrem Amazon-DocumentDB-Cluster. Dies ist die Standardeinstellung. Wenn Sie TLS deaktivieren, kann Lambda nicht mit Ihrem Cluster kommunizieren.

  • Aktivieren Sie Änderungsstreams in Ihrem Amazon-DocumentDB-Cluster. Weitere Informationen finden Sie unter Verwenden von Änderungsstreams mit Amazon DocumentDB im Amazon-DocumentDB-Entwicklerhandbuch.

  • Stellen Sie Lambda Anmeldeinformationen für den Zugriff auf Ihren Amazon-DocumentDB-Cluster zur Verfügung. Geben Sie bei der Einrichtung der Ereignisquelle den AWS Secrets Manager-Schlüssel mit den Authentifizierungsdetails (Benutzername und Passwort) an, die für den Zugriff auf Ihren Cluster erforderlich sind. Um diesen Schlüssel während der Einrichtung bereitzustellen, haben Sie die folgenden Möglichkeiten:

    • Wenn Sie die Lambda-Konsole für die Einrichtung verwenden, geben Sie diesen Schlüssel in das Feld Secrets-Manager-Schlüssel ein.

    • Wenn Sie AWS Command Line Interface (AWS CLI) für die Einrichtung verwenden, geben Sie diesen Schlüssel in der source-access-configurations Option an. Sie können diese Option entweder in den create-event-source-mapping-Befehl oder in den update-event-source-mapping-Befehl einschließen. Beispielsweise:

      aws lambda create-event-source-mapping \ ... --source-access-configurations '[{"Type":"BASIC_AUTH","URI":"arn:aws:secretsmanager:us-west-2:123456789012:secret:DocDBSecret-AbC4E6"}]' \ ...
  • Sie müssen Lambda Berechtigungen zur Verwaltung von Ressourcen gewähren, die zu Ihrem Amazon-DocumentDB-Stream gehören. Fügen Sie der zu der Ausführungsrolle Ihrer Funktion manuell die folgenden Berechtigungen hinzu:

  • Halten Sie die Größe der Amazon-DocumentDB-Änderungsstream-Ereignisse, die Sie an Lambda senden, bei unter 6 MB. Lambda unterstützt Nutzlasten mit einer Größe von bis zu 6 MB. Wenn Ihr Änderungsstream versucht, Lambda ein Ereignis zu senden, das größer als 6 MB ist, löscht Lambda die Nachricht und gibt die OversizedRecordCount-Metrik aus. Lambda gibt alle Metriken auf die bestmögliche Weise aus.

Anmerkung

Während Lambda-Funktionen in der Regel ein maximales Timeout-Limit von 15 Minuten haben, unterstützen Ereignisquellenzuordnungen für Amazon MSK, selbstverwaltetes Apache Kafka, Amazon DocumentDB, Amazon MQ für ActiveMQ und RabbitMQ nur Funktionen mit einem maximalen Timeout-Limit von 14 Minuten. Diese Einschränkung stellt sicher, dass die Ereignisquellenzuordnung Funktionsfehler und Wiederholungsversuche ordnungsgemäß verarbeiten kann.

Netzwerkkonfiguration

Damit Lambda Ihren Amazon DocumentDB-Cluster als Ereignisquelle verwenden kann, benötigt es Zugriff auf die Amazon VPC, in der sich Ihr Cluster befindet. Wir empfehlen, dass Sie AWS PrivateLink VPC-Endpunkte für Lambda bereitstellen, um auf Ihre VPC zuzugreifen. Stellen Sie einen VPC-Endpunkt für Lambda bereit und, falls der Cluster Authentifizierung verwendet, auch einen VPC-Endpunkt für Secrets Manager.

Oder stellen Sie sicher, dass die VPC, die Ihrem Amazon-DocumentDB-Cluster zugeordnet ist, ein NAT-Gateway pro öffentliches Subnetz enthält. Weitere Informationen finden Sie unter Aktivieren Sie den Internetzugang für mit VPN verbundene Lambda-Funktionen.

Wenn Sie VPC-Endpunkte verwenden, müssen Sie sie auch so konfigurieren, dass private DNS-Namen aktiviert werden.

Wenn Sie eine Ereignisquellenzuordnung für einen Amazon DocumentDB-Cluster erstellen, prüft Lambda, ob Elastic Network Interfaces (ENIs) bereits für die Subnetze und Sicherheitsgruppen der VPC Ihres Clusters vorhanden sind. Wenn Lambda vorhandene ENIs findet, versucht es, sie wiederzuverwenden. Andernfalls erstellt Lambda neue ENIs, um eine Verbindung zur Ereignisquelle herzustellen und Ihre Funktion aufzurufen.

Anmerkung

Lambda-Funktionen werden immer in VPCs ausgeführt, die dem Lambda-Service gehören. Diese VPCs werden automatisch vom Service verwaltet und sind für Kunden nicht sichtbar. Sie können Ihre Funktion auch mit einer Amazon VPC verbinden. In beiden Fällen hat die VPC-Konfiguration Ihrer Funktion keinen Einfluss auf die Zuordnung der Ereignisquelle. Nur die Konfiguration der VPC der Ereignisquelle bestimmt, wie Lambda eine Verbindung zu Ihrer Ereignisquelle herstellt.

VPC-Sicherheitsgruppenregeln

Konfigurieren Sie die Sicherheitsgruppen für die Amazon VPC, die Ihren Cluster enthält, mit den folgenden Regeln (mindestens):

  • Regeln für eingehenden Datenverkehr — Erlauben Sie den gesamten Datenverkehr auf dem Amazon DocumentDB-Cluster-Port für die Sicherheitsgruppen, die für Ihre Ereignisquelle angegeben sind. Amazon DocumentDB verwendet standardmäßig Port 27017.

  • Ausgehende Regeln - Erlauben Sie allen Datenverkehr auf Port 443 für alle Ziele. Lassen Sie den gesamten Verkehr auf dem Amazon DocumentDB-Cluster-Port zu. Amazon DocumentDB verwendet standardmäßig Port 27017.

  • Wenn Sie VPC-Endpunkte anstelle eines NAT-Gateways verwenden, müssen die Sicherheitsgruppen, die mit den VPC-Endpunkten verknüpft sind, den gesamten eingehenden Datenverkehr für Port 443 von den Sicherheitsgruppen der Ereignisquelle zulassen.

Arbeiten mit VPC-Endpunkten

Wenn Sie VPC-Endpunkte verwenden, werden API-Aufrufe zum Aufrufen Ihrer Funktion mithilfe der ENIs über diese Endpunkte geleitet. Der Lambda-Serviceprinzipal muss alle Funktionen aufrufenlambda:InvokeFunction, die diese ENIs verwenden.

Standardmäßig haben VPC-Endpoints offene IAM-Richtlinien. Es hat sich bewährt, diese Richtlinien so einzuschränken, dass nur bestimmte Prinzipale die erforderlichen Aktionen über diesen Endpunkt ausführen können. Um sicherzustellen, dass Ihre Ereignisquellenzuordnung Ihre Lambda-Funktion aufrufen kann, muss die VPC-Endpunktrichtlinie den Aufruf des Lambda-Serviceprinzips zulassen. lambda:InvokeFunction Wenn Sie Ihre VPC-Endpunktrichtlinien so einschränken, dass sie nur API-Aufrufe zulassen, die ihren Ursprung in Ihrer Organisation haben, verhindert, dass die Zuordnung der Ereignisquellen ordnungsgemäß funktioniert.

Die folgenden VPC-Endpunktrichtlinien zeigen, wie der erforderliche Zugriff für Lambda-Endpunkte gewährt wird.

Beispiel VPC-Endpunktrichtlinie — Lambda-Endpunkt
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }

Wenn Ihr Amazon DocumentDB-Cluster Authentifizierung verwendet, können Sie auch die VPC-Endpunktrichtlinie für den Secrets Manager Manager-Endpunkt einschränken. Um die Secrets Manager Manager-API aufzurufen, verwendet Lambda Ihre Funktionsrolle, nicht den Lambda-Serviceprinzipal. Das folgende Beispiel zeigt eine Secrets Manager Manager-Endpunktrichtlinie.

Beispiel VPC-Endpunktrichtlinie — Secrets Manager Manager-Endpunkt
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "customer_function_execution_role_arn" ] }, "Resource": "customer_secret_arn" } ] }

Erstellen einer Zuordnung von Ereignisquellen von Amazon DocumentDB (Konsole)

Erstellen Sie für eine Funktion zum Lesen aus dem Änderungsstream eines Amazon-DocumentDB-Clusters eine Zuordnung von Ereignisquellen. In diesem Abschnitt wird die entsprechende Vorgehensweise über die Lambda-Konsole beschrieben. AWS SDK und AWS CLI Anweisungen finden Sie unterErstellen einer Zuordnung von Ereignisquellen von Amazon DocumentDB (SDK oder CLI).

So erstellen Sie eine Zuordnung von Ereignisquellen von Amazon DocumentDB (Konsole)
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen einer Funktion aus.

  3. Wählen Sie unter Function overview (Funktionsübersicht) die Option Add trigger (Trigger hinzufügen).

  4. Wählen Sie unter Auslöserkonfiguration in der Dropdown-Liste die Option DocumentDB aus.

  5. Konfigurieren Sie die erforderlichen Optionen und wählen Sie dann Add (Hinzufügen) aus.

Lambda unterstützt die folgenden Optionen für Amazon-DocumentDB-Ereignisquellen:

  • DocumentDB-Cluster – Wählen Sie einen Amazon-DocumentDB-Cluster aus.

  • Auslöser aktivieren – Wählen Sie aus, ob Sie den Auslöser sofort aktivieren möchten. Wenn Sie dieses Kontrollkästchen aktivieren, beginnt Ihre Funktion sofort, Datenverkehr aus dem angegebenen Amazon-DocumentDB-Änderungsstream zu empfangen, sobald die Zuordnung von Ereignisquellen erstellt wurde. Wir empfehlen, das Kontrollkästchen zu deaktivieren, um die Zuordnung von Ereignisquellen zu Testzwecken in einem deaktivierten Zustand zu erstellen. Nach der Erstellung können Sie die Zuordnung von Ereignisquellen jederzeit aktivieren.

  • Datenbankname – Geben Sie den Namen einer Datenbank innerhalb des Clusters ein, die verwendet werden soll.

  • (Optional) Sammlungsname – Geben Sie den Namen einer Sammlung in der Datenbank ein, die verwendet werden soll. Wenn Sie keine Sammlung angeben, hört Lambda auf alle Ereignisse aus jeder Sammlung in der Datenbank.

  • Batchgröße – Legen Sie die maximale Anzahl von Nachrichten fest, die in einem einzelnen Batch abgerufen werden sollen bis zu 10 000. Die Standardgröße beträgt 100.

  • Startposition – Wählen Sie die Position im Stream aus, von der aus das Lesen von Datensätzen beginnen.

    • Neueste – Verarbeiten Sie Datensätze, die neu zum Stream hinzugefügt wurden. Ihre Funktion beginnt erst mit der Verarbeitung von Datensätzen, nachdem Lambda die Erstellung Ihrer Ereignisquelle abgeschlossen hat. Das bedeutet, dass einige Datensätze gelöscht werden können, bis Ihre Ereignisquelle erfolgreich erstellt wurde.

    • Horizont trimmen – Verarbeiten Sie alle Datensätze im Stream. Lambda verwendet die Protokollspeicherdauer Ihres Clusters, um zu bestimmen, ab wo mit dem Lesen von Ereignissen begonnen werden soll. Insbesondere beginnt Lambda mit dem Lesen von current_time - log_retention_duration. Ihr Änderungsstream muss bereits vor diesem Zeitstempel aktiv sein, damit Lambda alle Ereignisse korrekt lesen kann.

    • Am Zeitstempel – Verarbeiten Sie Datensätze ab einem bestimmten Zeitpunkt. Ihr Änderungsstream muss bereits vor dem angegebenen Zeitstempel aktiv sein, damit Lambda alle Ereignisse korrekt lesen kann.

  • Authentifizierung – Wählen Sie unter Authentifizierungsmethode den Zugriff auf den Broker in Ihrem Cluster aus.

    • BASIC_AUTH – Bei der Standardauthentifizierung müssen Sie den Secrets-Manager-Schlüssel angeben, der die Anmeldeinformationen für den Zugriff auf Ihren Cluster enthält.

  • Secrets-Manager-Schlüssel – Wählen Sie den Secrets-Manager-Schlüssel aus, der die Authentifizierungsdetails (Benutzername und Passwort) enthält, die für den Zugriff auf Ihren Amazon-DocumentDB-Cluster erforderlich sind.

  • (Optional) Batch-Fenster – Legen Sie die maximale Zeitspanne zur Erfassung von Datensätzen vor dem Aufruf der Funktion in Sekunden fest (bis zu 300).

  • (Optional) Vollständige Dokumentkonfiguration – Wählen Sie für Dokumentaktualisierungsvorgänge aus, was Sie an den Stream senden möchten. Der Standardwert ist Default, was bedeutet, dass Amazon DocumentDB für jedes Änderungsstream-Ereignis nur ein Delta sendet, das die vorgenommenen Änderungen beschreibt. Weitere Informationen zu diesem Feld finden Sie FullDocumentin der MongoDB Javadoc-API-Dokumentation.

    • Standard – Lambda sendet nur ein Teildokument, das die vorgenommenen Änderungen beschreibt.

    • UpdateLookup— Lambda sendet ein Delta, das die Änderungen beschreibt, zusammen mit einer Kopie des gesamten Dokuments.

Erstellen einer Zuordnung von Ereignisquellen von Amazon DocumentDB (SDK oder CLI)

Um eine Zuordnung von Ereignisquellen von Amazon DocumentDB mit einem AWS SDK zu verwalten, können Sie die folgenden API-Operationen verwenden:

Verwenden Sie den create-event-source-mappingBefehl, um die Zuordnung der AWS CLI Ereignisquelle mit dem zu erstellen. Im folgenden Beispiel wird dieser Befehl verwendet, um eine Funktion namens my-function einem Amazon-DocumentDB-Änderungsstream zuzuordnen. Der Ereignisquelle wird mit dem Amazon-Ressourcennamen (ARN) angegeben, mit einer Batchgröße von 500, beginnend ab dem Zeitstempel in Unix-Zeit. Der Befehl gibt auch den Secrets-Manager-Schlüssel an, den Lambda verwendet, um eine Verbindung zu Amazon DocumentDB herzustellen. Darüber hinaus enthält er document-db-event-source-config-Parameter, die die Datenbank und die Sammlung angeben, aus der gelesen werden soll.

aws lambda create-event-source-mapping --function-name my-function \ --event-source-arn arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy --batch-size 500 \ --starting-position AT_TIMESTAMP \ --starting-position-timestamp 1541139109 \ --source-access-configurations '[{"Type":"BASIC_AUTH","URI":"arn:aws:secretsmanager:us-east-1:123456789012:secret:DocDBSecret-BAtjxi"}]' \ --document-db-event-source-config '{"DatabaseName":"test_database", "CollectionName": "test_collection"}' \

Die Ausgabe sollte in etwa wie folgt aussehen:

{ "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284", "BatchSize": 500, "DocumentDBEventSourceConfig": { "CollectionName": "test_collection", "DatabaseName": "test_database", "FullDocument": "Default" }, "MaximumBatchingWindowInSeconds": 0, "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "LastModified": 1541348195.412, "LastProcessingResult": "No records processed", "State": "Creating", "StateTransitionReason": "User action" }

Nach der Erstellung können Sie den update-event-source-mapping-Befehl verwenden, um die Einstellungen für Ihre Amazon-DocumentDB-Ereignisquelle zu aktualisieren. Im folgenden Beispiel werden die Batchgröße auf 1 000 und das Batchfenster auf 10 Sekunden aktualisiert. Für diesen Befehl benötigen Sie die UUID Ihrer Zuordnung von Ereignisquellen, die Sie über den list-event-source-mapping-Befehl oder die Lambda-Konsole abrufen können.

aws lambda update-event-source-mapping --function-name my-function \ --uuid f89f8514-cdd9-4602-9e1f-01a5b77d449b \ --batch-size 1000 \ --batch-window 10

Die Ausgabe sollte in etwa wie folgt aussehen:

{ "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284", "BatchSize": 500, "DocumentDBEventSourceConfig": { "CollectionName": "test_collection", "DatabaseName": "test_database", "FullDocument": "Default" }, "MaximumBatchingWindowInSeconds": 0, "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "LastModified": 1541359182.919, "LastProcessingResult": "OK", "State": "Updating", "StateTransitionReason": "User action" }

Da Lambda die Einstellungen asynchron aktualisiert, werden Sie diese Änderungen möglicherweise erst nach Abschluss des Vorgangs in der Ausgabe sehen. Verwenden Sie den get-event-source-mapping-Befehl, um die aktuellen Einstellungen Ihrer Zuordnung von Ereignisquellen anzuzeigen.

aws lambda get-event-source-mapping --uuid f89f8514-cdd9-4602-9e1f-01a5b77d449b

Die Ausgabe sollte in etwa wie folgt aussehen:

{ "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284", "DocumentDBEventSourceConfig": { "CollectionName": "test_collection", "DatabaseName": "test_database", "FullDocument": "Default" }, "BatchSize": 1000, "MaximumBatchingWindowInSeconds": 10, "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "LastModified": 1541359182.919, "LastProcessingResult": "OK", "State": "Enabled", "StateTransitionReason": "User action" }

Um Ihre Zuordnung von Ereignisquellen von Amazon DocumentDB zu löschen, verwenden Sie den delete-event-source-mapping-Befehl.

aws lambda delete-event-source-mapping \ --uuid 2b733gdc-8ac3-cdf5-af3a-1827b3b11284

Startpositionen für Abfragen und Streams

Beachten Sie, dass die Stream-Abfrage bei der Erstellung und Aktualisierung der Zuordnung von Ereignisquellen letztendlich konsistent ist.

  • Bei der Erstellung der Zuordnung von Ereignisquellen kann es mehrere Minuten dauern, bis mit der Abfrage von Ereignissen aus dem Stream begonnen wird.

  • Bei Aktualisierungen der Zuordnung von Ereignisquellen kann es mehrere Minuten dauern, bis die Abfrage von Ereignissen aus dem Stream gestoppt und neu gestartet wird.

Dieses Verhalten bedeutet, dass, wenn Sie LATEST als Startposition für den Stream angeben, die Zuordnung von Ereignisquellen bei der Erstellung oder Aktualisierung möglicherweise Ereignisse übersieht. Um sicherzustellen, dass keine Ereignisse übersehen werden, geben Sie die Startposition des Streams als TRIM_HORIZON oder AT_TIMESTAMP an.

Überwachen Ihrer Amazon-DocumentDB-Ereignisquelle

Um Sie bei der Überwachung Ihrer Amazon-DocumentDB-Ereignisquelle zu unterstützen, gibt Lambda die Metrik IteratorAge aus, wenn die Funktion das Verarbeiten von Datensätzen abgeschlossen hat. Das Iterator-Alter ist der Unterschied zwischen dem Zeitstempel des letzten Ereignisses und dem aktuellen Zeitstempel. Im Wesentlichen gibt die Metrik IteratorAge an, wie alt der letzte Datensatz im Batch bei Fertigstellung der Verarbeitung war. Wenn Ihre Funktion derzeit neue Ereignisse verarbeitet, können Sie mit dem Iterator-Alter die Latenz zwischen dem Zeitpunkt, zu dem ein Datensatz hinzugefügt wird, und dem Zeitpunkt, zu dem die Funktion verarbeitet wird, schätzen. Eine ansteigende Tendenz bei IteratorAge kann auf Probleme mit Ihrer Funktion hindeuten. Weitere Informationen finden Sie unter Arbeiten mit Lambda-Funktionsmetriken.

Amazon DocumentDB DocumentDB-Change-Streams sind nicht für die Bewältigung großer Zeitlücken zwischen Ereignissen optimiert. Wenn Ihre Amazon DocumentDB DocumentDB-Ereignisquelle über einen längeren Zeitraum keine Ereignisse empfängt, kann Lambda die Zuordnung der Ereignisquellen deaktivieren. Die Länge dieses Zeitraums kann je nach Clustergröße und anderen Workloads zwischen einigen Wochen und einigen Monaten variieren.

Lambda unterstützt Nutzlasten von bis zu 6 MB. Änderungsstream-Ereignisse von Amazon DocumentDB können jedoch bis zu 16 MB groß sein. Wenn Ihr Änderungsstream versucht, Lambda ein Änderungsstream-Ereignis zu senden, das größer als 6 MB ist, löscht Lambda die Nachricht und gibt die Metrik OversizedRecordCount aus. Lambda gibt alle Metriken auf die bestmögliche Weise aus.