我想要在 Amazon EventBridge 中将计划触发器的参数传递到 AWS Batch 任务。
简短描述
在 AWS Batch 中,您的参数是您在 AWS Batch 任务定义的命令部分中定义的变量占位符。这些占位符可让您:
- 对使用相同格式的多个作业使用相同作业定义。
- 在提交时以编程方式更改命令中的值。
最佳实践是将您的参数定义为键值对。例如:
"Parameters" : {"test" : "abc"}
如果您注册作业定义或提交任务,请使用任务容器属性的命令字段中的参数替代占位符。例如:
"Command" : [ "echo” "Ref::test" ]
当您提交前述作业时,容器命令中的 Ref::test 参数将被替换为默认值 (abc)。
您可以在提交作业时为相同参数键定义不同参数值。例如:
"Parameters" : {"test" : "hello"}
当您提交前述作业时,容器命令中的 Ref::test 参数将被替换为您在作业提交期间定义的自定义值默认值 (hello)。
解决方法
设置您的 AWS Batch 环境
1. 创建计算环境。
2. 创建一个作业队列,然后将您的作业队列与您在步骤 1 中创建的计算环境关联。
3. 使用映像(例如 nginx)创建任务定义。
创建 EventsBridge 规则
**重要提示:**您必须对 EventBridge 规则中的 JSON 文本使用驼峰式大小写。
1. 打开 EventBridge 控制台。
2. 选择创建规则。
3. 为规则输入名称。可选择输入描述。
4. 在 Define pattern(定义模式)中,根据您的使用场景选择 Event pattern(事件模式)或 Schedule(计划)。
5. 在“选择”事件总线中,选择默认选项 AWS 默认事件总线。
6. 在 Select targets(选择目标)部分,从Target(目标)下拉列表中选择 Batch job queue(批处理任务队列)。
7. 对于任务队列,输入您之前创建的任务队列的 ARN
8. 对于作业定义,输入您之前创建的作业定义的名称。
9. 对于作业名称,请输入您的作业名称。
10. 展开配置输入部分,然后选择常数(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 规则