Tutorial: PlanenAWS LambdaFunktionen mit CloudWatch Events - Amazon CloudWatch Events

Tutorial: PlanenAWS LambdaFunktionen mit CloudWatch Events

Anmerkung

Amazon EventBridge ist die bevorzugte Methode zum Verwalten Ihrer Ereignisse. Amazon CloudWatch Events und EventBridge liegen der gleiche Service und die gleiche API zugrunde, EventBridge bietet jedoch mehr Funktionen. Änderungen, die Sie in CloudWatch oder EventBridge vornehmen, werden in allen Konsolen angezeigt. Weitere Informationen finden Sie unter Amazon EventBridge.

Sie können eine Regel für die Ausführung einer AWS Lambda-Funktion nach einem Zeitplan erstellen. In diesem Tutorial erfahren Sie, wie Sie die AWS Management Console oder AWS CLI verwenden, um die Regel zu erstellen. Wenn Sie die AWS CLI verwenden möchten, aber nicht installiert haben, schauen Sie unter nach.

CloudWatch Events stellt in Planungsausdrücken keine Präzision der zweiten Ebene bereit. Die feinste Zeitauflösung bei Verwendung eines Cron-Ausdrucks ist eine Minute. Aufgrund der verteilten Struktur der CloudWatch Events und Ziel-Services kann die Verzögerung zwischen dem Zeitpunkt, an dem die geplante Regel ausgelöst wird, und dem Zeitpunkt, an dem der Ziel-Service die Ziel-Ressource ausführt, einige Sekunden betragen. Die geplante Regel wird innerhalb der angegebenen Minute ausgelöst, aber nicht exakt in der 0. Sekunde.

Schritt 1: Erstellen einer AWS Lambda-Funktion

Erstellen Sie eine Lambda-Funktion, um die geplanten Ereignisse zu protokollieren. Geben Sie diese Funktion beim Erstellen der Regel an.

So erstellen Sie eine Lambda-Funktion:
  1. Öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wenn Sie noch nicht mit Lambda gearbeitet haben, wird Ihnen eine Willkommensseite angezeigt. Wählen Sie Get Started Now. Wählen Sie andernfalls Create a Lambda Function (Eine Lambda-Funktion erstellen) aus.

  3. Geben Sie auf der Seite Select blueprint für das Filter hello ein und wählen Sie dann den Plan hello-world aus.

  4. Wählen Sie auf der Seite Configure Triggers (Auslöser konfigurieren) die Option Next (Weiter) aus.

  5. Führen Sie auf der Seite Configure function (Funktion konfigurieren) die folgenden Schritte aus:

    1. Geben Sie einen Namen und eine Beschreibung für die Lambda-Funktion ein. Z. B. Name der Funktion "LogScheduledEvent".

    2. Bearbeiten Sie den Beispiel-Code für die Lambda-Funktion. Beispiel:

      'use strict'; exports.handler = (event, context, callback) => { console.log('LogScheduledEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
    3. Wählen Sie für Role die Option Choose an existing role. Wählen Sie in Existing role (Vorhandene Rolle) Ihre Basis-Ausführungsrolle aus. Andernfalls erstellen Sie eine neue grundlegende Ausführungsrolle.

    4. Wählen Sie Next.

  6. Klicken Sie auf der Seite Review auf Create function.

Schritt 2: Erstellen einer Regel

Erstellen Sie eine Regel, damit die Lambda-Funktion nach einem Zeitplan ausgeführt wird.

So erstellen Sie eine Regel mithilfe der Konsole
  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsbereich Events und die Option Create rule aus.

  3. Führen Sie für Ereignisquelle folgende Schritte aus:

    1. Wählen Sie Schedule aus.

    2. Wählen Sie Fixed rate of aus und geben Sie ein Zeitintervall an (z. B. 5 Minuten).

  4. Wählen Sie für Targets (Ziele) Add target (Ziel hinzufügen), Lambda-Funktion.

  5. Wählen Sie für Function (Funktion) die Lambda-Funktion, die Sie erstellt haben.

  6. Wählen Sie Configure details.

  7. Geben Sie für Rule definition einen Namen und eine Beschreibung für die Regel ein.

  8. Wählen Sie Create rule aus.

Wenn Sie möchten, können Sie die Regel mit der erstellen AWS CLI. Zunächst müssen Sie die Berechtigungsregel zum Aufruf der Lambda-Funktion erteilen. Anschließend können Sie die Regel erstellen und Lambda-Funktion als Ziel hinzufügen.

So erstellen Sie eine Regel mit der AWS CLI
  1. Verwenden Sie den folgenden put-rule-Befehl, um eine Regel zu erstellen, die sich selbst nach einem Zeitplan auslöst:

    aws events put-rule \ --name my-scheduled-rule \ --schedule-expression 'rate(5 minutes)'

    Wenn diese Regel ausgelöst wird, erstellt sie ein Ereignis, das als Eingabe für die Ziele dieser Regel dient. Folgendes Ereignis wird z. B. erstellt:

    { "version": "0", "id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa", "detail-type": "Scheduled Event", "source": "aws.events", "account": "123456789012", "time": "2015-10-08T16:53:06Z", "region": "us-east-1", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule" ], "detail": {} }
  2. Mit dem folgenden add-permission-Befehl vertrauen Sie dem CloudWatch Events-Serviceprinzipal (events.amazonaws.com) und erteilen der Regel mit dem angegebenen Amazon-Ressourcennamen (ARN) Berechtigungen:

    aws lambda add-permission \ --function-name LogScheduledEvent \ --statement-id my-scheduled-event \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule
  3. Mit folgendem put-targets-Befehl fügen Sie dieser Regel die erstellte Lambda-Funktion hinzu, sodass sie alle 5 Minuten ausgeführt wird:

    aws events put-targets --rule my-scheduled-rule --targets file://targets.json

    Erstellen Sie die Datei targets.json mit folgendem Inhalt:

    [ { "Id": "1", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:LogScheduledEvent" } ]

Schritt 3: Überprüfen der Regel

Mindestens fünf Minuten nach Abschluss von Schritt 2 können Sie prüfen, ob die Lambda-Funktion aufgerufen wurde.

Testen Ihrer Regel
  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsbereich Events und Rules aus, wählen Sie den Namen der Regel aus, die Sie erstellt haben, und wählen Sie Show metrics for the rule aus.

  3. So zeigen Sie die Ausgabe aus der Lambda-Funktion an:

    1. Wählen Sie im Navigationsbereich Logs aus.

    2. Wählen Sie den Namen der Protokollgruppe für die Lambda-Funktion aus (/aws/lambda/function-name).

    3. Wählen Sie den Namen des Protokoll-Streams aus, um die von der Funktion für die gestartete Instance bereitgestellten Daten anzuzeigen.

  4. (Optional) Wenn Sie fertig sind, können Sie die Regel deaktivieren.

    1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

    2. Wählen Sie im Navigationsbereich Events (Ereignisse) und Rules (Regeln) aus.

    3. Wählen Sie die Regel aus, dann Actions (Aktionen) und anschließend Disable (Deaktivieren).

    4. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Disable.