Rufen Sie eine Lambda-Funktion auf, wenn eine andere Lambda-Funktion bereitgestellt wird

Sep 07 2020

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

3 Marcin Sep 07 2020 at 12:06

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.

pras007 Sep 09 2020 at 20:27

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"
      ]
    }
  }
}