Tutorial: Weiterleiten von Ereignissen an einen Amazon Kinesis Stream mit CloudWatch Events
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
Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie im Navigationsbereich Events und die Option Create rule aus.
-
Führen Sie für Ereignisquelle folgende Schritte aus:
-
Wählen Sie Event Pattern aus.
-
Wählen Sie Build event pattern to match events by service aus.
-
Wählen Sie EC2, Instance State-change Notification (Benachrichtigung über die Statusänderung der EC2-Instance).
-
Wählen Sie Specific state(s) (Spezifische(r) Status) aus und dann die Option Running (In Ausführung).
-
-
Wählen Sie für Targets (Ziele) die Option Add Target (Ziel hinzufügen) und dann Kinesis stream (Kinesis-Stream) aus.
-
Wählen Sie für Stream den Stream aus, den Sie erstellt haben.
-
Wählen Sie Create a new role for this specific resource aus.
-
Wählen Sie Configure details.
-
Geben Sie für Rule definition einen Namen und eine Beschreibung für die Regel ein.
-
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
Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
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.
-
Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
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.
-
(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
-
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=" }
-
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.