如何在 EventBridge 中将计划触发器的参数传递到 AWS Batch 任务?

1 分钟阅读
0

我想要在 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 规则

AWS 官方
AWS 官方已更新 2 年前