Auf Amazon-ECS- CloudWatch Ereignisse warten - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Auf Amazon-ECS- CloudWatch Ereignisse warten

In diesem Tutorial richten Sie eine einfache AWS Lambda Funktion ein, die Amazon-ECS-Aufgabenereignisse überwacht und sie in einen CloudWatch Logs-Protokollstream 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 für den Starttyp Fargate und Extern über die 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 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 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 korrekt konfiguriert ist, sehen Sie am Ende dieses Tutorials, dass die Ereignisdetails im Protokollstream von CloudWatch Logs angezeigt werden, der dieser Lambda-Funktion zugeordnet ist.

  6. Wählen Sie Speichern.

Schritt 2: Registrieren von Ereignisregeln

Als Nächstes erstellen Sie eine CloudWatch Ereignisregel für Ereignisse, die Aufgabenereignisse erfasst, die von Ihren Amazon-ECS-Clustern stammen. 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 die AWS Management Console zum Erstellen einer Ereignisregel verwenden, fügt die Konsole automatisch die IAM-Berechtigungen hinzu, die erforderlich sind, um CloudWatch Events die Berechtigung zum Aufrufen Ihrer Lambda-Funktion zu erteilen. Wenn Sie eine Ereignisregel mit der erstellen AWS CLI, müssen Sie diese Berechtigung explizit 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 Details konfigurieren.

  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: Erstellen einer Aufgabendefinition

Erstellen Sie eine Aufgabendefinition.

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

  2. Wählen Sie im Navigationsbereich Task Definitions aus.

  3. Wählen Sie Create new Task Definition (Neue Aufgabendefinition erstellen), Create new revision with JSON (Neue Revision mit JSON) erstellen.

  4. Kopieren Sie die folgende Beispielaufgabendefinition, fügen Sie sie in das Feld ein, und wählen Sie dann Save (Speichern).

    { "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "memory": 300, "image": "httpd:2.4", "name": "simple-app" } ], "family": "console-sample-app-static" }
  5. Wählen Sie Erstellen.

Schritt 4: Testen Ihrer Regel

Schließlich erstellen Sie eine CloudWatch Ereignisregel für Ereignisse, die Aufgabenereignisse aus Ihren Amazon-ECS-Clustern 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 Konsole unter https://console.aws.amazon.com/ecs/v2.

  2. Wählen Sie Task definitions (Aufgabendefinitionen).

  3. Wählen Sie und console-sample-app-staticdann Bereitstellen, Neue Aufgabe ausführen aus.

  4. Wählen Sie für Cluster die Option Standard und wählen Sie dann Deploy (Bereitstellen) 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.