教學課程:使 EventBridge 用結構描述將事件傳送至 Amazon Kinesis - Amazon EventBridge

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使 EventBridge 用結構描述將事件傳送至 Amazon Kinesis

您可以將 AWS API呼叫事件傳送 EventBridge 到 Amazon Kinesis 串流、建立 Kinesis Data Stre ams 應用程式,以及處理大量資料。在本教學中,您會建立 Kinesis 串流,然後在 EventBridge 主控台中建立規則,以便在 Amazon EC2 執行個體停止時將事件傳送至該串流。

必要條件

在本教學課程中,您將使用下列內容:

注意

本教程使用 AWS 事件和內置的aws.events架構註冊表。您也可以手動將自訂事件新增至自訂結構描述登錄,或使用結構描述探索,以根據自訂事件的結構描述建立 EventBridge 規則。

如需結構描述的詳細資訊,請參閱 Amazon EventBridge 模式。如需關於使用其他事件模式選項建立規則的詳細資訊,請參閱 創建對 Amazon 事件做出反應的規則 EventBridge

步驟 1:建立 Amazon Kinesis 串流

若要建立串流,請在命令提示字元中使用create-stream AWS CLI 指令。

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

當串流狀態為 ACTIVE 時,串流已備妥。若要檢查串流狀態,請使用 describe-stream 命令。

aws kinesis describe-stream --stream-name test

步驟 2:建立規則

建立規則,以便在停止 Amazon EC2 執行個體時將事件傳送至串流。

建立規則
  1. 在打開 Amazon EventBridge 控制台https://console.aws.amazon.com/events/

  2. 在導覽窗格中,選擇規則

  3. 選擇建立規則

  4. 輸入規則的名稱和描述。例如,命名規則 TestRule

  5. 針對事件匯流排,選取預設值

  6. 針對規則類型,選擇具有事件模式的規則

  7. 選擇下一步

  8. 對於事件來源,請選擇AWS 事件或 EventBridge 合作夥伴事件。

  9. 建立方法中,選擇使用結構描述

  10. 針對事件模式,請執行下列動作:

    1. 針對結構描述類型,選擇從結構描述登記檔選取結構描述

    2. 針對結構描述登錄檔,請從下拉式清單中選擇 aws.events

    3. 在「結構描述」EC2InstanceStateChangeNotification 中,從下拉式清單中選擇 aws.ec2@

      EventBridge 在「模型」下顯示事件結構描述。

      EventBridge 在事件所需的任何屬性旁顯示紅色星號,而不是事件模式。

    4. 模型中,設定下列事件篩選屬性:

      1. 選取狀態屬性旁邊的 + 編輯

        關係留空。針對數值,輸入 running。選擇設定

      2. 選取來源屬性旁邊的 + 編輯

        關係留空。針對數值,輸入 aws.ec2。選擇設定

      3. 選取詳細資料類型屬性旁邊的 + 編輯

        關係留空。針對數值,輸入 EC2 Instance State-change Notification。選擇設定

    5. 若要檢視您已建構的事件模式,請在中選擇 [產生事件模式] JSON

      EventBridge 顯示事件模式JSON:

      { "detail": { "state": ["running"] }, "detail-type": ["EC2 Instance State-change Notification"], "source": ["aws.ec2"] }
  11. 選擇下一步

  12. 目標類型欄位中,選擇 AWS 服務

  13. 針對選取目標,從下拉式清單中選擇 Kinesis 串流

  14. 串流中,選取您在步驟 1:建立 Amazon Kinesis 串流區段中建立的 Kinesis 串流。在此範例中,選取 test

  15. 針對執行角色,請選擇為此特定資源建立新角色

  16. 選擇下一步

  17. 選擇下一步

  18. 檢閱規則的詳細資訊,然後選擇建立規則

步驟 3:測試規則

若要測試您的規則,請停止 Amazon EC2 執行個體。等待幾分鐘讓執行個體停止,然後檢查您的 CloudWatch 指標,確認您的函數是否執行。

停用執行個體以測試您的規則
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

  2. 啟動執行個體。如需詳細資訊,請參閱 Amazon EC2 使用者指南的啟動執行個體

  3. 在打開 Amazon EventBridge 控制台https://console.aws.amazon.com/events/

  4. 在導覽窗格中,選擇規則

    選擇您建立的規則名稱,並選擇規則的指標

  5. (選用) 完成後,請終止執行個體。如需詳細資訊,請參閱 Amazon EC2 使用者指南的終止執行個體

步驟 4:確認事件是否已傳送

您可以使 AWS CLI 用從串流取得記錄,以驗證事件是否已傳送。

取得記錄
  1. 若要開始從 Kinesis 串流讀取,請在命令提示中使用 get-shard-iterator 命令。

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

    下列為範例輸出。

    { "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
  2. 若要取得記錄,請使用以下 get-records 命令。根據上一步驟的輸出使用碎片反覆運算器。

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

    如果命令成功,它會請求來自您的串流的指定碎片的記錄。您可能會收到零或多筆記錄。傳回的任何記錄可能不會呈現您串流中的所有記錄。如果您沒有收到預期的資料,請呼叫 get-records

  3. Kinesis 中的記錄用 Base64 編碼。使用 Base64 解碼器解碼數據,以便您可以驗證它是以形式發送到流的JSON事件。

步驟 5:清除您的資源

除非您想要保留為此教學課程建立的資源,否則您現在便可刪除。刪除不再使用的 AWS 資源,即可避免 AWS 帳戶不必要的費用。

若要刪除 EventBridge 規則
  1. 開啟主 EventBridge 控台的 [規則] 頁面

  2. 選取您建立的規則。

  3. 選擇刪除

  4. 選擇刪除

刪除 Kinesis 串流
  1. 開啟 Kinesis 主控台的資料串流頁面

  2. 選取您建立的串流。

  3. 選擇動作刪除

  4. 在欄位中輸入刪除並選擇刪除