Tutorial: Weiterleiten von Ereignissen an einen Amazon Kinesis Stream mit CloudWatch Events - Amazon CloudWatch Events

Tutorial: Weiterleiten von Ereignissen an einen Amazon Kinesis Stream 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 weiterleitenAWSAufrufen von API-Ereignissen in CloudWatch Events an einen -Stream in Amazon Kinesis.

Prerequisite

Installieren Sie den AWS CLI. Weitere Informationen finden Sie im AWS Command Line Interface-Benutzerhandbuch.

Schritt 1: Erstellen Sie einen Amazon Kinesis Stream

Verwenden Sie den folgenden create-stream-Befehl zum Erstellen eines Streams.

aws kinesis create-stream --stream-name test --shard-count 1

Wenn der Stream-Status ACTIVE ist, ist der Stream bereit. Verwenden Sie den folgenden describe-stream-Befehl zum Überprüfen des Stream-Status:

aws kinesis describe-stream --stream-name test

Schritt 2: Erstellen einer Regel

Erstellen Sie beispielsweise eine Regel, mit Ereignisse an den Stream gesendet werden, wenn eine Amazon EC2-Instance angehalten wird.

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, Instance State-change Notification (Benachrichtigung über die Statusänderung der EC2-Instance).

    4. Wählen Sie Specific state(s) (Spezifische(r) Status) aus und dann die Option Running (In Ausführung).

  4. Wählen Sie für Targets (Ziele) die Option Add Target (Ziel hinzufügen) und dann Kinesis stream (Kinesis-Stream) aus.

  5. Wählen Sie für Stream den Stream aus, den Sie erstellt haben.

  6. Wählen Sie Create a new role for this specific resource aus.

  7. Wählen Sie Configure details.

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

  9. Wählen Sie Create rule aus.

Schritt 3: Testen der Regel

Halten Sie zum Testen der Regel eine Amazon EC2-Instance an. Warten Sie ein paar Minuten, bis die Instance beenden ist. Überprüfen Sie dann die CloudWatch-Metriken, 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. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  4. 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.

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

Schritt 4: Überprüfen, ob das Ereignis weitergeleitet wurde

Sie können den Datensatz aus dem Stream abrufen, um zu überprüfen, ob das Ereignis weitergeleitet wurde.

So rufen Sie den Datensatz ab
  1. Verwenden Sie den folgenden get-shard-iterator-Befehl, um den Lesevorgang im Kinesis-Stream zu starten:

    aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name test

    Ausgabebeispiel:

    { "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
  2. Verwenden Sie den folgenden get-records-Befehl, um den Datensatz abzurufen. Verwenden Sie den Shard-Iterator aus dem vorangegangenen Schritt:

    aws kinesis get-records --shard-iterator AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=

    Wenn der Befehl erfolgreich war, werden Datensätze aus dem Stream für eine bestimmte Shard abgefragt. Sie können null oder mehr Datensätze erhalten. Die zurückgegebenen Datensätze stellen möglicherweise nicht alle Datensätze in Ihrem Stream dar. Wenn Sie nicht die erwarteten Daten erhalten, rufen Sie weiter auf get-records.

    Datensätze in Kinesis sind im Base64-Format codiert. Der Streams unterstützen jedoch in der AWS CLI keine Base64-Codierung. Wenn Sie die Daten mit einem Base64-Decoder manuell decodieren, sehen Sie, dass es sich um das an den Stream im JSON-Format weitergeleitete Ereignis handelt.