Tutorial: ProtokollierenAWSAPI-Aufrufe mit CloudWatch Events - Amazon CloudWatch Events

Tutorial: ProtokollierenAWSAPI-Aufrufe 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 mit einer AWS Lambda-Funktion die einzelnen AWS-API-Aufrufe protokollieren. Sie können beispielsweise eine Regel erstellen, mit der alle Operationen in Amazon EC2 protokolliert werden. Sie können diese Regel auch so einschränken, dass nur ein bestimmter API-Aufruf protokolliert wird. In diesem Tutorial wird jedes Mal ein Protokoll erstellt, wenn eine Amazon EC2-Instance beendet wird.

Prerequisite

Bevor Sie diese Ereignisse anpassen können, müssen Sie mit AWS CloudTrail einen Trail einrichten. Wenn kein Trail vorhanden ist, führen Sie die folgenden Schritte aus:

Sie erstellen einen Trail wie folgt:
  1. Öffnen Sie die CloudTrail-Konsole unter https://console.aws.amazon.com/cloudtrail/.

  2. Wählen Sie Trails, Create trail (Trail erstellen).

  3. Geben Sie unter Trail name einen Namen für den Trail ein.

  4. Geben Sie für Storage location (Speicherort) unter Create a new S3 bucket (Neuen S3-Bucket erstellen) den Namen für den neuen Bucket ein, an den CloudTrail Protokolle übermitteln soll.

  5. Wählen Sie Create (Erstellen) aus.

Schritt 1: Erstellen einer AWS Lambda-Funktion

Erstellen Sie eine Lambda-Funktion, um den API-Aufruf 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 "LogEC2StopInstance".

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

      'use strict'; exports.handler = (event, context, callback) => { console.log('LogEC2StopInstance'); 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 ausgeführt wird, wenn Sie eine Amazon EC2-Instance starten.

So erstellen Sie eine Regel
  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 Event Pattern aus.

    2. Wählen Sie Build event pattern to match events by service aus.

    3. Wählen Sie EC2, AWSAWS API Call via CloudTrail (AWS API-Aufruf über CloudTrail).

    4. Wählen Sie Specific operation(s) aus und geben Sie dann StopInstances in das Feld unten ein.

  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.

Schritt 3: Testen der Regel

Sie können Ihre Regeln testen, indem Sie eine Amazon EC2-Instance mithilfe der Amazon EC2-Konsole anhalten. Warten Sie ein paar Minuten, bis die Instance beendet ist. Überprüfen Sie dann Ihre AWS Lambda-Metriken in der CloudWatch-Konsole, um zu prüfen, ob die Funktion aufgerufen wurde.

Testen der Regel durch Anhalten einer Instance
  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Starten Sie eine Instance. Weitere Informationen finden Sie unter Ausführen von Befehlen auf Linux-Instances beim Start im Amazon EC2-Benutzerhandbuch für Linux Instances.

  3. Halten Sie die Instance an. Weitere Informationen finden Sie unter Grundlagen zur automatischen Platzierung und Affinität im Amazon EC2 Benutzerhandbuch für Linux-Instances.

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

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

  6. 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 angehaltene Instance bereitgestellten Daten anzuzeigen.

  7. (Optional) Wenn Sie fertig sind, können Sie die angehaltene Instance beenden. Weitere Informationen finden Sie unter Beenden Ihrer Instance im Amazon EC2-Benutzerhandbuch für Linux-Instances.