

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

# 教學課程：使用 EventBridge 接聽 AWS Batch 任務事件
<a name="batch_cwet"></a>

在本教學課程中，您會設定簡單的 AWS Lambda 函數來接聽 AWS Batch 任務事件，並將其寫入 CloudWatch Logs 日誌串流。

## 先決條件
<a name="cwet_prereqs"></a>

此教學課程假設您有一個運作中的運算環境，和已準備好要接受任務的任務佇列。如果您沒有執行中的運算環境和任務佇列可從中擷取事件，請依照中的步驟[AWS Batch 教學課程入門](Batch_GetStarted.md)建立事件。在本教學課程結束時，您可以選擇將任務提交至此任務佇列，以測試您已正確設定 Lambda 函數。

**Topics**
+ [

## 先決條件
](#cwet_prereqs)
+ [

# 教學課程：建立 Lambda 函數
](cwet_create_lam.md)
+ [

# 教學課程：註冊事件規則
](cwet_register_event_rule.md)
+ [

# 教學課程：測試您的組態
](cwet_test.md)

# 教學課程：建立 Lambda 函數
<a name="cwet_create_lam"></a>

 在此程序中，您會建立簡單的 Lambda 函數，做為 AWS Batch 事件串流訊息的目標。

**若要建立目標 Lambda 函數**

1. 在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 AWS Lambda 主控台。

1. 依序選擇 **Create function** (建立函數)、**Author from scratch** (從頭開始撰寫)。

1. 針對**函數名稱**，輸入 **batch-event-stream-handler**。

1. 針對**執行階段**，選擇 **Python 3.8**。

1. 選擇 **Create function (建立函數)**。

1. 在**程式碼來源**區段中，編輯範例程式碼以符合下列範例：

   ```
   import json
   
   
   def lambda_handler(event, _context):
       # _context is not used
       del _context
       if event["source"] != "aws.batch":
           raise ValueError("Function only supports input from events with a source type of: aws.batch")
   
       print(json.dumps(event))
   ```

   這是簡單的 Python 3.8 函數，可列印 傳送的事件。 AWS Batch如果一切設定正確，則在此教學課程的最後，事件詳細資訊出現在與此 Lambda 函數建立關聯的 CloudWatch Logs 日誌串流中。

1. 選擇**部署**。

# 教學課程：註冊事件規則
<a name="cwet_register_event_rule"></a>

在本節中，您會建立 EventBridge 事件規則，以擷取來自 AWS Batch 資源的任務事件。此規則會擷取來自定義帳戶 AWS Batch 內的所有事件。任務訊息本身包含事件來源的相關資訊，包括提交該來源的任務佇列。您可以使用此資訊以程式設計方式篩選和排序事件。

**注意**  
如果您使用 AWS 管理主控台 建立事件規則，主控台會自動新增 EventBridge 的 IAM 許可，以呼叫 Lambda 函數。不過，如果您使用 建立事件規則 AWS CLI，則必須明確授予許可。如需詳細資訊，請參閱《Amazon EventBridge 使用者指南》中的[事件和事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)。

**建立 EventBridge 規則**

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

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

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

1. 輸入規則的名稱和描述。

   在同一個區域和同一個事件匯流排上，規則不能與另一個規則同名。

1. 針對**事件匯流排**，選擇要與此規則建立關聯的事件匯流排。如果您想要此規則匹配來自您的帳戶的事件，請選取 **AWS 預設事件匯流排**。當您帳戶中的 AWS 服務發出事件時，一律會前往您帳戶的預設事件匯流排。

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

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

1. 在**事件來源**中，選擇**其他**。

1. 針對**事件模式**，選取**自訂模式 (JSON 編輯器）**。

1. 將下列的事件模式貼到文字區域。

   ```
   {
     "source": [
       "aws.batch"
     ]
   }
   ```

   此規則適用於所有 AWS Batch 群組和每個 AWS Batch 事件。或者，您可以建立一個更針對性的規則，來篩選掉一些結果。

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

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

1. 針對**選取目標**，選擇 **Lambda 函數**，然後選取您的 Lambda 函數。

1. (選用) 針對**其他設定**，請執行下列動作：

   1. 針對 **Maximum age of event** (事件的最長存留期)，輸入介於一分鐘 (00:01) 到 24 小時 (24:00) 之間的某個值。

   1. 針對**重試嘗試**，輸入介於 0 到 185 之間的某個數。

   1. 針對**無效字母佇列**，選擇是否使用標準 Amazon SQS 佇列做為無效字母佇列。若與此規則匹配的事件未成功傳送到目標，則 EventBridge 會將其傳送至無效字母佇列。執行以下任意一項：
      + 選擇**無**，即不使用無效字母佇列。
      + 選擇**目前 AWS 帳戶中的選取 Amazon SQS 佇列以用作無效字母佇列**，然後從下拉式清單中選取要使用的佇列。
      + 選擇**在其他 AWS 帳戶中選取 Amazon SQS 佇列做為無效字母佇列**，然後輸入要使用的佇列 ARN。您必須將以資源為基礎政策連接到佇列，而且該佇列授與 EventBridge 向其傳送簡訊的許可。如需詳細資訊，請參閱 *Amazon EventBridge 使用者指南*中的[授與無效字母佇列的許可](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html#eb-dlq-perms)。

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

1. (選用) 為規則輸入一或多個標籤。如需詳細資訊，請參閱《Amazon EventBridge 使用者指南》**中的 [Amazon EventBridge 標籤](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)。

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

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

# 教學課程：測試您的組態
<a name="cwet_test"></a>

您現在可以透過將任務提交至任務佇列來測試 EventBridge 組態。如果一切設定正確，則會觸發 Lambda 函數，並將事件資料寫入函數的 CloudWatch Logs 日誌串流。

**若要測試組態**

1. 在 https：//[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) 開啟 AWS Batch 主控台。

1. 提交新 AWS Batch 任務。如需詳細資訊，請參閱[教學課程：提交任務](submit_job.md)。

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格上，選擇 **Logs** (日誌)，然後選取 Lambda 函數的日誌群組 (例如，**/aws/lambda/***my-function*)。

1. 選取日誌串流，以檢視事件資料。