Tutorial: Überwachung von Amazon ECS CloudWatch Events - Amazon ECS

Tutorial: Überwachung von Amazon ECS CloudWatch Events

In diesem Tutorial richten Sie eine einfache AWS Lambda-Funktion ein, die Amazon-ECS-Aufgabenereignisse überwacht und sie in einen CloudWatch Logs-Protokoll-Stream schreibt.

Voraussetzung: Einrichten eines Testclusters

Wenn Sie über kein aktives Cluster verfügen, mit dem Sie Ereignisse erfassen, führen Sie die Schritte unter Erstellen eines Clusters mit der klassischen Konsole aus, um eines zu erstellen. Am Ende dieses Tutorials führen Sie eine Aufgabe auf diesem Cluster aus, um zu testen, ob Sie Ihre Lambda-Funktion korrekt konfiguriert haben.

Schritt 1: Erstellen der Lambda-Funktion

In diesem Verfahren erstellen Sie eine einfache Lambda-Funktion, die als Ziel für Amazon ECS-Ereignis-Stream-Nachrichten dient.

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

  2. Wählen Sie Create function (Funktion erstellen).

  3. Verfahren Sie auf dem Bildschirm Author from scratch wie folgt:

    1. Geben Sie für Name einen Wert ein.

    2. Wählen Sie für Runtime (Laufzeit) Ihre Python-Version aus, etwa Python 3.9.

    3. Wählen Sie unter Role (Rolle) die Option Create a new role with basic Lambda permissions (Eine neue Rolle mit den grundlegenden Lambda-Berechtigungen erstellen) aus.

  4. Wählen Sie Create function (Funktion erstellen).

  5. Bearbeiten Sie im Bereich Function code den Beispiel-Code entsprechend dem folgenden Beispiel:

    import json def lambda_handler(event, context): if event["source"] != "aws.ecs": raise ValueError("Function only supports input from events with a source type of: aws.ecs") print('Here is the event:') print(json.dumps(event))

    Dies ist eine einfache Python 3.9-Funktion, mit der das von Amazon ECS gesendete Ereignis gedruckt wird. Wenn alles richtig konfiguriert ist, sehen Sie am Ende dieses Tutorials, wie die Ereignisdetails in dem CloudWatch Logs-Protokollstream angezeigt werden, der dieser Lambda-Funktion zugeordnet ist.

  6. Wählen Sie Save (Speichern) aus.

Schritt 2: Registrieren von Ereignisregeln

Als Nächstes erstellen Sie eine CloudWatch Events-Ereignisregel, die aus Amazon ECS-Clustern stammende Aufgabenereignisse erfasst. Diese Regel erfasst alle Ereignisse, die aus allen Clustern innerhalb des Kontos stammen, in dem sie definiert wurde. Die Aufgabennachrichten selbst enthalten Informationen über die Ereignisquelle, einschließlich dem Cluster, in dem sie sich befindet. Sie können diese verwenden, um Ereignisse programmgesteuert zu filtern und zu sortieren.

Anmerkung

Wenn Sie AWS Management Console zum Erstellen einer Ereignisregel verwenden, fügt die Konsole automatisch die IAM-Berechtigungen hinzu, mit denen CloudWatch Events die Berechtigung erteilt wird, Ihre Lambda-Funktion aufzurufen. Wenn Sie eine Ereignisregel mit AWS CLI erstellen, müssen Sie diese Berechtigung ausdrücklich erteilen. Weitere Informationen finden Sie unter Ereignisse und Ereignismuster im Amazon CloudWatch Events-Benutzerhandbuch.

Umleiten von Ereignissen an Ihre Lambda-Funktion

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

  2. Wählen Sie im Navigationsbereich Events (Ereignisse), Rules (Regeln), Create rule (Regel erstellen) aus.

  3. Wählen Sie für Event Source als Ereignisquelle ECS aus. Standardmäßig gilt die Regel für alle Amazon ECS-Ereignisse all Ihrer Amazon ECS-Gruppen. Alternativ können Sie bestimmte Ereignisse oder eine bestimmte Amazon ECS-Gruppe auswählen.

  4. Wählen Sie für Targets (Ziele) die Option Add target (Ziel hinzufügen) und für Target type (Zieltyp) die Option Lambda function (Lambda-Funktion) und danach Ihre Lambda-Funktion aus.

  5. Wählen Sie Configure details.

  6. Geben Sie für Rule definition einen Namen und eine Beschreibung für Ihre Regel ein und wählen Sie Create rule aus.

Schritt 3: Testen Ihrer Regel

Abschließend erstellen Sie eine CloudWatch Events-Ereignisregel, die aus Amazon ECS-Clustern stammende Aufgabenereignisse erfasst. Diese Regel erfasst alle Ereignisse, die aus allen Clustern innerhalb des Kontos stammen, in dem sie definiert wurde. Die Aufgabennachrichten selbst enthalten Informationen über die Ereignisquelle, einschließlich dem Cluster, in dem sie sich befindet. Sie können diese verwenden, um Ereignisse programmgesteuert zu filtern und zu sortieren.

Testen Ihrer Regel

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie Cluster und danach default aus.

  3. Wählen Sie auf dem Bildschirm Cluster : default Tasks und danach Run new Task aus.

  4. Wählen Sie für Task Definition die neueste Version von console-sample-app-static und danach Run Task aus.

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

  6. Wählen Sie im Navigationsbereich Logs und die Protokollgruppe für Ihre Lambda-Funktion aus (z. B. /aws/lambda/my-function).

  7. Wählen Sie einen Protokollstream aus, um die Ereignisdaten anzuzeigen.