Rufen Sie eine Lambda-Funktion auf, wenn eine andere Lambda-Funktion bereitgestellt wird
Ich habe eine AWS-Lambda-Funktion, die Konfigurationsobjekte bereitstellt. Immer wenn diese Lambda-Funktion aktualisiert wird (dh erneut bereitgestellt wird), muss ich eine andere Lambda-Funktion auslösen, die Änderungen in diesen Konfigurationsobjekten erkennt und Maßnahmen ergreift. Wie überwache ich diese Lambda-Bereitstellung? Welches Cloud-Watch-Ereignis muss ich abonnieren?
Antworten
Ich gehe davon aus, dass Ihre Lambda-Bereitstellungen nicht von CodeDeploy verwaltet werden . In diesem Fall würde ich empfehlen, eine CloudTrial-Testversion zu erstellen .
Sobald eine CT-Testversion mit Standardeinstellungen erstellt wurde, werden alle Verwaltungs-API-Aufrufe Ihrer Lambda-Funktion überwacht . Einer von ihnen ist UpdateFunctionCode. So können Sie eine CloudWatch-Regel für erstellen AWS API Call via CloudTrail. Die Regel würde beim API-Aufruf der Funktionsaktualisierung ausgelöst.
Beispiel für eine solche Regel:
{
"source": [
"aws.lambda"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"lambda.amazonaws.com"
],
"eventName": [
"UpdateFunctionCode"
]
}
}
Dann können Sie ein zweites Lambda auslösen, basierend auf dem erfassten Aktualisierungsereignis der ersten Funktion.
Basierend auf dem Vorschlag von @ Marcin wurde das Konsolenprotokoll zum Drucken des Ereignisses verwendet. Die folgende Regel hat dazu beigetragen, eine bestimmte Funktion zu filtern.
{
"source": [
"aws.lambda"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"lambda.amazonaws.com"
],
"eventName": [
"UpdateFunctionCode20150331v2"
],
"responseElements": {
"functionName": [
"myFunction"
]
}
}
}