如何使用 AWS Batch 作為 EventBridge 規則的目標?

上次更新日期:2022 年 1 月 19 日

我想要使用 AWS Batch 作為 Amazon EventBridge 規則的目標。

解決方案

以下範例會説明如何設定 Amazon EventBridge,以在建立了新的 Amazon Simple Storage Service (Amazon S3) 儲存貯體時提交 AWS Batch 任務。

建立任務定義

1.    開啟 AWS Batch 主控台

2.    從導覽列中選取您的 AWS 區域。

3.    在導覽窗格中,選擇 Job definitions (任務定義),然後選擇 Create (建立)。

4.    在 Job definition name (任務定義名稱) 中,為您的任務定義輸入唯一的名稱。

注意:您的唯一名稱中最多可以使用 128 個字母 (大寫和小寫)、數字、連字符和底線。

5.    在 Container image (容器映像) 中,輸入 amazonlinux

6.    在 Command (命令) 中,輸入以下內容:

echo Ref::S3bucket

7.    在 vCPUs (vCPU) 中,輸入 2

8.    在 Memory (MiB) (記憶體 (MiB)) 中,輸入 500

9.    選擇 Next (下一步),然後選擇 Create (建立)。

取得任務佇列和任務定義的 ARN

1.    開啟 AWS Batch 主控台

2.    在導覽窗格中,選擇 Job queues (任務佇列)。

3.    選擇您的任務佇列。

4.    在 Job queue details (任務佇列詳細資訊) 區段中,複製 Queue ARN (佇列 ARN),然後加以儲存以供稍後使用。

5.    在導覽窗格中,選擇 Job definitions (任務定義),然後選擇先前建立的任務定義。

6.    在 Job definition details (任務定義詳細資訊) 區段中,複製 Job definition ARN (任務定義 ARN),然後加以儲存以供稍後使用。

為 S3 儲存貯體中的物件啟用 CloudTrail 資料事件日誌記錄

若要對 Amazon S3 物件層級的作業觸發 AWS Batch 任務 (例如,在有新物件上傳到現有儲存貯體時),請參閲為 S3 儲存貯體和物件啟用 CloudTrail 事件日誌記錄

建立 EventBridge 規則

1.    開啟 EventBridge 主控台

2.    選取 Create rule (建立規則)。

3.    輸入規則的 Name (名稱)。您也可以選擇輸入 Description (描述)。

4.    在 Define pattern (定義模式) 中,選取 Event pattern (事件模式)。

5.    選取 Pre-defined pattern by service (依服務預先定義的模式)。

6.    對於 Service provider (服務供應商),選擇 AWS

7.    在 Service name (服務名稱) 中,選擇 Simple Storage Service (S3)

8.    在 Event type (事件類型) 中,選擇 Bucket-Level API Call via CloudTrail (透過 CloudTrail 的儲存貯體層級 API 呼叫)。

9.    選擇 Any operation (任何作業)。

10.    在 Select targets (選取目標) 區段中,從 Target (目標) 下拉式清單中選擇 Batch job queue (Batch 任務佇列)。

11.    在 Job queue (任務佇列) 中,貼上您稍早複製的任務佇列 ARN。

12.    在 Job definition (任務定義) 中,貼上您稍早複製的任務定義 ARN。

13.    在 Job name (任務名稱) 中,輸入您 AWS Batch 任務的名稱。

14.    在 Configure input (設定輸入) 區段中,選擇 Input Transformer (輸入轉換器)。

15.    在第一個輸入方塊中,輸入要在觸發事件時傳送的 S3 儲存貯體值:

{"S3BucketNameValue":"$.detail.requestParameters.bucketName"}

注意:請將 S3BucketNameValue 替換為您自己的值。

16.    在第二個輸入方塊中,輸入要傳遞給 Batch 任務的 Parameters (參數) 結構:

{"Parameters" : {"S3bucket": S3BucketNameValue}}

注意:請將 S3BucketNameValue 替換為您自己的值。將 S3bucket 替換為您要在 AWS Batch 任務中定義的參數的名稱。

17.    選擇 Create a new role for this specific resource (為此特定資源建立新的角色) 或 Use existing role (使用現有角色)。

注意:如果您選擇現有角色,則該角色應具有會允許 batch:SubmitJob 動作的 AWS Identity and Access Management (IAM) 政策。

18.    選取 Create (建立)。

測試您建立的新規則

1.    開啟 Amazon S3 主控台

2.    選擇 Create bucket (建立儲存貯體)。

3.    在 Bucket name (儲存貯體名稱) 欄位中,為您的新儲存貯體輸入符合 DNS 規範的唯一名稱。

4.    在 Region (區域) 中,選擇 EventBridge rule (EventBridge 規則) 建立所在的相同區域。

5.    選擇 Create (建立)。

檢查您的日誌

1.    開啟 AWS Batch 主控台

2.    在導覽窗格中,選擇 Jobs (任務)。

3.    選擇 Status (狀態) 為 SUCCEEDED (成功) 的任務。

4.    在 Job details (任務詳細資訊) 頁面上的 Attempts (嘗試) 區段中,選擇 View logs (檢視日誌)。日誌會在 CloudWatch 主控台中顯示您的儲存貯體名稱。