0

Meine Lambda-Funktion enthält einige Code, der Abfragen an dynamodb enthält. Sobald eine Abfrage ausgeführt wurde, fährt das Lambda mit dem restlichen Code fort, der auf dem Ergebnis dieser Abfrage basiert. Was passiert, wenn ich die Kapazitätsgrenze des Dynamodb überschreite? Ich kann die Abfrage zu SQS schieben und später verarbeiten, aber dann kann ich die Ausführung des Lambda nicht fortsetzen. Eine andere Lösung wäre, jede fehlgeschlagene Abfrage erneut zu versuchen, aber wenn der Dynamob extrem ausgelastet ist, könnte mein Lambda die Grenze von 5 Minuten überschreiten. Scheint wie eine Verlierer-verlieren-Situation. Was würden Sie tun?aws Lambda - Handling-Code, wenn dynamodb Kapazität überschritten wird

Antwort

0

Die fehlertoleranteste Lösung wäre, die Abfrage und die Verarbeitung der Ergebnisse zu entkoppeln.

  1. Statt Verarbeitungsergebnisse sofort, um die Ergebnisse zu einer anderen SQS-Warteschlange schreiben und eine SNS abgeschickt.

  2. Verschieben Sie die Verarbeitung auf eine zweite Lambda-Funktion. Diese neue Funktion kann durch die SNS-Benachrichtigung ausgelöst werden. Er kann die Ergebniswarteschlange lesen und ausstehende Nachrichten verarbeiten.

  3. Ändern Sie die ursprüngliche Funktion, um alle fehlgeschlagenen Abfragen für später in die Warteschlange einzureihen.