如何在 CloudWatch 中将计划触发器的参数传递到 AWS Batch 作业?
上次更新时间:2020 年 5 月 15 日
我想要在 Amazon CloudWatch 中将计划触发器的参数传递到 AWS Batch 作业。
简短描述
在 AWS Batch 中,您的参数是您在 AWS Batch 作业定义的命令部分中定义的变量占位符。这些占位符可让您:
对使用相同格式的多个作业使用相同作业定义。 在提交时以编程方式更改命令中的值。最佳实践是将您的参数定义为键值对。例如:
"Parameters" : {"test" : "abc"}
如果您注册作业定义或提交作业,请使用作业容器属性的命令字段中的参数替代占位符。例如:
"Command" :
当您提交前述作业时,容器命令中的 Ref::test 参数将被替换为默认值 (abc)。
您可以在提交作业时为相同参数键定义不同参数值。例如:
"Parameters" : {"test" : "hello"}
当您提交前述作业时,容器命令中的 Ref::test 参数将被替换为您在作业提交期间定义的自定义值默认值 (hello)。
解决方法
设置您的 AWS Batch 环境
1.创建计算环境。
2.创建一个作业队列,然后将您的作业队列与您在步骤 1 中创建的计算环境关联。
3.使用映像(例如 nginx)创建作业定义。
创建 Amazon CloudWatch Events 规则
1.打开 CloudWatch 控制台。
2.在导航窗格中,选择事件。
3.选择开始使用。
4.在事件源部分中,基于您的需求选择事件模式或计划。
5.对于目标,请选择添加目标。
6.从目标列表中,选择批处理作业队列。
7.对于作业队列,输入您之前创建的作业队列的名称。
8.对于作业定义,输入您之前创建的作业定义的名称。
9.对于作业名称,请输入您的作业名称。
10.展开配置输入部分,然后选择常数(JSON 文本)。
11.在出现的文本框中,输入以下内容:
{"Parameters": {"name":"test"}, "ContainerOverrides": { "Command": } }
规则在 CloudWatch 调用规则时提交 AWS Batch 作业。如果作业成功,您的 CloudWatch 日志将在以下位置打印“test”字样:
Log Group: /aws/batch/job
Log Stream: yourJobDefinitionName/default/your-ecs-task-ID
重要提示:您必须对 CloudWatch Events 规则中的 JSON 文本使用驼峰式大小写。
12.选择配置详细信息,然后完成设置向导中的剩余步骤来创建规则。