Sie sind richtig - Es gibt kein Benachrichtigungsereignis, das die Fertigstellung eines EBS-Snapshot anzeigt. Stattdessen müssen Sie den Status überprüfen, bis sich der Status zu completed
ändert.
Sie haben auch richtig, dass AWS Lambda-Funktionen für eine maximal 5 Minuten laufen können und eine Lambda-Funktion, die auf einen externen Prozess wartet, keine gute Architektur ist.
Stattdessen könnten Sie Aufbrechens der Architektur:
- Haben Sie Ihren bestehenden Prozess der EBS Snapshot auslösen (n) und dann
- vereinbaren, eine Nachricht in eine SQS-Warteschlange drücken Lambda-Funktion (zB alle 5 Minuten) um die SQS-Queue zu prüfen. Wenn eine Nachricht vorhanden ist:
- Abrufen von Informationen über die Instanz und Snapshot (n) aus der Nachricht
- Überprüfen Sie den Status des Schnappschusses (n)
- Wenn der Status
completed
, führen Sie den nächsten Schritt im Prozess
der Nachteil davon ist, dass die geplante Lambda-Funktion selbst auslösen, wenn es keine Nachrichten in der Warteschlange sind. Die Lambda-Funktion wird sehr schnell beendet (Kosten: 100ms).
Die Alternative ist Führen Sie ein cron
Skript auf einer Amazon EC2-Instanz (oder auf jedem Computer mit dem Internet verbunden). Eine t2.nano
Instanz ist etwa 15,6 c pro Tag, was teurer sein kann als eine geplante Lambda-Funktion. Wenn Sie bereits eine Instanz verwenden, entstehen keine zusätzlichen Kosten.
Dank, den SQS-Ansatz will ich ausprobieren! – user1801879