如何將參數從 EventBridge 中的排定觸發程序傳遞至 AWS Batch 任務?

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

我想將參數從 Amazon EventBridge 中的排定觸發程序,傳遞至 AWS Batch 任務。

簡短描述

在 AWS Batch 中,您的參數是您在 AWS Batch 任務定義的 command 區段中定義的變數預留位置。這些預留位置可讓您進行下列操作:

  • 對使用相同格式的多個任務,使用相同任務定義。
  • 在提交時以程式設計方式更改 command 中的值。

這是將參數定義為鍵值組的最佳實務。例如:

"Parameters" : {"test" : "abc"}

如果登錄任務定義或提交任務,請在任務容器屬性的 command 欄位中,使用參數替換預留位置。例如:

"Command" : [ "echo” "Ref::test" ]

提交先前任務時,容器 command 中的 Ref::test 引數會替換為預設值 (abc)。

提交任務時,您可以為同一參數索引鍵定義不同參數值。例如:

"Parameters" : {"test" : "hello"}

提交先前任務時,容器 command 中的 Ref::test 引數,會替換為提交任務時定義的自訂值 (hello)。

解決方案

設定 AWS Batch 環境

1.    建立運算環境

2.    建立任務佇列,然後將任務佇列與您在第 1 步建立的運算環境相關聯。

3.    使用映像 (如 nginx) 建立任務定義

建立 EventBridge 規則

1.    開啟 EventBridge 主控台

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

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

4.    在 Define pattern (定義模式) 中,根據您的使用案例選取 Event pattern (事件模式) 或 Schedule (排程)。

5.    在 Select event bus (選擇事件匯流排) 中,選取 AWS default event bus (AWS 預設事件匯流排) 的預設選項。

6.    在 Select targets (選擇目標) 中,從 Target (目標) 下拉式清單選擇 Batch job queue (批次任務佇列)。

7.    為 Job queue (任務佇列) 輸入先前所建立任務佇列的 ARN。

8.    為 Job definition (任務定義) 輸入先前所建立任務定義的名稱。

9.    為 Job name (任務名稱) 輸入您任務的名稱。

10.    展開 Configure input (設定輸入) 區段,然後選取 Constant (JSON text) (常數 (JSON 文字))。

11.    在顯示的文字方塊中,輸入以下內容:

{"Parameters": {"name":"test"}, "ContainerOverrides": { "Command": ["echo","Ref::name"] } }

EventBridge 叫用規則時,規則會提交 AWS Batch 任務。如果任務成功,您的 CloudWatch 日誌會在下列位置印出 "test":

Log Group: /aws/batch/job
Log Stream: yourJobDefinitionName/default/your-ecs-task-ID

重要:您必須在 EventBridge 規則中為 JSON 文字使用駝峰式大小寫。

12.    選取 Create (建立)。