

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

# 教學課程：使用 EventBridge 結構描述將事件傳送至 Amazon Kinesis
<a name="eb-relay-events-kinesis-stream"></a>

您可以在 EventBridge 中將 AWS API 呼叫[事件](eb-events.md)傳送至 [Amazon Kinesis 串流](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)、建立 Kinesis Data Streams 應用程式，以及處理大量資料。在本教學課程中，您會建立 Kinesis 串流，然後在 EventBridge 主控台中建立[規則](eb-rules.md)。該規則會在 [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 執行個體停止時將事件傳送至該串流。

**Topics**
+ [先決條件](#eb-stream-prerequisite)
+ [步驟 1：建立 Amazon Kinesis 串流](#eb-stream-create-stream)
+ [步驟 2：建立規則](#eb-stream-create-rule)
+ [步驟 3：測試規則](#eb-stream-test-rule)
+ [步驟 4：確認事件是否已傳送](#eb-stream-verify-event)
+ [步驟 5：清除您的資源](#cleanup)

## 先決條件
<a name="eb-stream-prerequisite"></a>

在本教學課程中，您將使用下列內容：
+ 使用 AWS CLI 來使用 Kinesis 串流。

  若要安裝 AWS CLI，請參閱[安裝、更新和解除安裝 第 2 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。

**注意**  
本教學課程使用 AWS 事件和內建`aws.events`的結構描述登錄檔。您也可以手動將自訂結構描述新增至自訂結構描述登錄檔，或使用結構描述探索，以根據自訂事件的結構描述建立 EventBridge 規則。  
如需結構描述的詳細資訊，請參閱 [Amazon EventBridge 結構描述](eb-schema.md)。如需關於使用其他事件模式選項建立規則的詳細資訊，請參閱 [在 Amazon EventBridge 中建立規則](eb-create-rule-visual.md)。

## 步驟 1：建立 Amazon Kinesis 串流
<a name="eb-stream-create-stream"></a>

若要建立串流，請在命令提示字元中使用 `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：建立規則
<a name="eb-stream-create-rule"></a>

建立一個規則，在您停止 Amazon EC2 執行個體時，將事件傳送至您的串流。

**建立規則**

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

1. 在導覽窗格中，選擇**規則**。

1. 選擇**建立規則**。

1. 輸入規則的名稱和描述。例如，命名規則 `TestRule`

1. 針對**事件匯流排**，選取**預設值**。

1. 針對**規則類型**，選擇**具有事件模式的規則**。

1. 選擇**下一步**。

1. 在**事件來源**欄位中，選擇 **AWS 事件或 EventBridge 合作夥伴事件**。

1. 在**建立方法**中，選擇**使用結構描述**。

1. 針對**事件模式**，請執行下列動作：

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

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

   1. 在**結構描述**中，從下拉式清單中選擇 **aws.ec2@EC2InstanceStateChangeNotification**。

      EventBridge 會在**模型**下顯示事件結構描述。

      EventBridge 會在*事件*而非事件模式所需的任何屬性旁邊顯示紅色星號。

   1. 在**模型**中，設定下列事件篩選屬性：

      1. 選取**狀態**屬性旁邊的 **\$1 編輯**。

         將**關係**留空。針對**數值**，輸入 `running`。選擇**設定**。

      1. 選取**來源**屬性旁邊的 **\$1 編輯**。

         將**關係**留空。針對**數值**，輸入 `aws.ec2`。選擇**設定**。

      1. 選取**詳細資料類型**屬性旁邊的 **\$1 編輯**。

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

   1. 若要檢視您已建構的事件模式，請選擇**在 JSON 中產生事件模式**

      EventBridge 會以 JSON 格式顯示事件模式：

      ```
      {
        "detail": {
          "state": ["running"]
        },
        "detail-type": ["EC2 Instance State-change Notification"],
        "source": ["aws.ec2"]
      }
      ```

1. 選擇**下一步**。

1. 在**目標類型**欄位中，選擇 **AWS 服務**。

1. 針對**選取目標**，從下拉式清單中選擇 **Kinesis 串流**。

1. 在**串流**中，選取您在**步驟 1：建立 Amazon Kinesis 串流**區段中建立的 Kinesis 串流。在此範例中，選取 `test`。

1. 針對**執行角色**，請選擇**為此特定資源建立新角色**。

1. 選擇**下一步**。

1. 選擇**下一步**。

1. 檢閱規則的詳細資訊，然後選擇**建立規則**。

## 步驟 3：測試規則
<a name="eb-stream-test-rule"></a>

為了測試您的規則，請停止 Amazon EC2 執行個體。等待幾分鐘讓執行個體停止，然後檢查 CloudWatch 指標以確認您的函數是否已被執行。

**停用執行個體以測試您的規則**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 啟動執行個體。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[啟動您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

1. 在導覽窗格中，選擇**規則**。

   選擇您建立的規則名稱，並選擇**規則的指標**。

1. (選用) 完成後，請終止執行個體。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的[終止您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

## 步驟 4：確認事件是否已傳送
<a name="eb-stream-verify-event"></a>

您可以使用 從串流 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="
   }
   ```

1. 若要取得記錄，請使用以下 `get-records` 命令。根據上一步驟的輸出使用碎片反覆運算器。

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

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

1. Kinesis 中的記錄用 Base64 編碼。使用 Base64 解碼器對資料進行解碼，以便您可以驗證這是以 JSON 格式傳送至串流的事件。

## 步驟 5：清除您的資源
<a name="cleanup"></a>

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

**刪除 EventBridge 規則**

1. 開啟 EventBridge 主控台的[規則頁面](https://console.aws.amazon.com/events/home#/rules)。

1. 選取您建立的規則。

1. 選擇**刪除**。

1. 選擇**刪除**。

**刪除 Kinesis 串流**

1. 開啟 Kinesis 主控台的[資料串流頁面](https://console.aws.amazon.com/kinesis/home#/streams/list)。

1. 選取您建立的串流。

1. 選擇**動作**、**刪除**。

1. 在欄位中輸入**刪除**並選擇**刪除**。