Ich habe versucht, eine Reihe von Lambda mit Hilfe von Wolkenbildung zu erstellen. Ich möchte, dass die Lambdas ausgelöst werden, sobald sie erstellt sind. Ich habe in verschiedenen Blogs gesehen, dass ein Trigger auf s3
oder sns
erstellt wurde, aber keiner scheint eine Option zu sein, um lambda
auszulösen, sobald er erstellt wurde. Irgendwelche Optionen?
Ja, das ist möglich. Hier sind ein paar Optionen:
Erstellen Sie manuell ein SNS-Thema . Fügen Sie Ihrem Stack mit der Lambda-Funktion einen AWS::SNS::Subscription
hinzu als Endpoint
und das SNS-Thema als TopicArn
. Konfigurieren Sie bei der Stapelerstellung / -aktualisierung Stack-Ereignisbenachrichtigungen, die an dieses SNS-Thema gesendet werden sollen.
--notification-arns
, wenn Sie Ihren Stack mit AWS CLI oder ein anderes AWS SDK.) Fügen Sie eine benutzerdefinierte Ressource hinzu, die auf eine Lambda-Funktion verweist, die aufgerufen werden soll bei der Erstellung.
DependsOn
-Attribut für die benutzerdefinierte Ressource, die auf die Ressource verweist, die Sie sicherstellen möchten, wird zuerst erstellt, bevor die Funktion aufgerufen wird. CREATE_IN_PROGRESS
, weil die benutzerdefinierte Ressource Teil des Stapels selbst ist. DELETE_FAILED
-Zustand hängen bleiben. Fügen Sie die Lambda-Funktionsreferenz zu einer Stapelausgabe , dann schreibe ein einfaches Skript, das die Stack-Erstellung durchführt und anschließend die Lambda-Funktion manuell aufruft.
Für diejenigen, die ähnliche Workarounds suchen.
CloudWatch kann API-Aufrufe von CloudFormation erfassen, das heißt "CreateStack", "UpdateStack" und "DeleteStack", Stapelzustände wie "Create_complete" oder "Complete_Rollback" sind nicht erfassbar, dh Zustandsänderungen können nicht ausgelöst werden Lambda.
Die Problemumgehung ist SNS, Stacks können Benachrichtigungen an SNS senden (Voreinstellungen beim Erstellen eines Stapels) und SNS kann Lambda auslösen, Sie können jedoch nicht für bestimmte Status auswählen. Die Lambda-Funktion übernimmt also die Aufgabe, um herauszufinden, welcher Zustand im "Message" -Inhalt eines Ereignisses ist. Jeder, nur codieren.
Tags und Links aws-lambda amazon-cloudformation