如何在 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.选择配置详细信息,然后完成设置向导中的剩余步骤来创建规则。