我想將參數從 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 規則
重要:您必須在 EventBridge 規則中為 JSON 文字使用駝峰式大小寫。
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
12. 選取 Create (建立)。
相關資訊
建立回應事件的 Amazon EventBridge 規則
建立依照排程執行的 Amazon EventBridge 規則