如何将 AWS Batch 作为我的 CloudWatch Events 规则的目标使用?

上次更新时间:2019 年 12 月 9 日

我想将 AWS Batch 作为我的 Amazon CloudWatch Events 规则的目标使用。

解决方法

下例演示了如何配置 Amazon CloudWatch 以在创建新的 Amazon Simple Storage Service (Amazon S3) 存储桶时提交 AWS Batch 作业。

创建作业定义

1.    打开 AWS Batch 控制台

2.    从导航栏中选择您的 AWS 区域。

3.    在导航窗格中选择作业定义,然后选择创建

4.    对于作业定义名称,为您的作业定义输入一个唯一的名称。

注意:您在此唯一名称中最多可以使用 128 个字母(大写和小写字母)、数字、连字符和下划线。

5.    对于容器镜像,输入 amazonlinux

6.    对于命令,输入以下内容:

echo Ref::S3bucket

7.    对于 vCPU,输入 2

8.    对于 内存 (MiB),输入 500

9.    选择下一步,然后选择创建

获取作业队列的 ARN 和作业定义

1.    打开 AWS Batch 控制台

2.    在导航窗格中,选择作业队列

3.    选择您的作业队列。

4.    在概览部分,复制队列 ARN,然后将其保存以便稍后使用。

5.    在导航窗格中选择作业定义,然后选择您之前创建的作业定义。

6.    在作业定义属性部分,复制作业定义 ARN,然后将其保存以便稍后使用。

创建 CloudWatch Events 规则

1.    打开 CloudWatch 控制台

2.    在导航窗格中,选择规则

3.    选择创建规则

4.    在事件源部分,选择事件模式

5.    对于服务名称,选择 Simple Storage Service (S3)

6.    对于事件类型,选择存储桶级别操作

注意:有关根据 Amazon S3 对象级别操作(例如将新对象上传到现有存储桶时)触发 AWS Batch 作业的更多信息,请参阅如何使用 AWS CloudTrail 数据事件为 S3 存储桶启用对象级别日志记录?

7.    选择任何操作

8.    在目标部分,选择添加目标

9.    从主菜单中,选择 Batch 作业队列

10.    对于作业队列,粘贴您之前复制的作业队列 ARN。

11.    对于作业定义,粘贴您之前复制的作业定义 ARN。

12.    对于作业名称,输入您的 AWS Batch 作业的名称。

13.    在配置输入部分,选择输入转换器

14.    在第一个输入框中,输入触发事件时将发送的 S3 存储桶值:

{"S3BucketNameValue":"$.detail.requestParameters.bucketName"}

注意:请将 S3BucketNameValue 替换为您自己的值。

15.    在第二个输入框中,输入将发送到 Batch 作业的参数结构:

{"Parameters" : {"S3bucket": S3BucketNameValue}}

注意:请将 S3BucketNameValue 替换为您自己的值。请将 S3bucket 替换为您要在 AWS Batch 作业中定义的参数的名称。

16.    选择为此特定资源创建新角色使用现有角色

注意:如果您选择现有角色,该角色应具有允许 batch:SubmitJob 操作的 AWS Identity and Access Management (IAM) 策略。

17.    选择配置详细信息

18.    对于名称,输入您的规则的名称。

19.    对于状态,选中已启用复选框。

20.    选择创建规则

测试您创建的新规则

1.    打开 Amazon S3 控制台

2.    选择创建存储桶

3.    在存储桶名称字段中,键入新存储桶的符合 DNS 标准的唯一名称。

4.    对于区域,选择您创建 CloudWatch Events 规则的区域。

5.    选择创建

检查您的日志记录

1.    打开 AWS Batch 控制台

2.    在导航窗格中,选择作业

3.    选择状态已成功的作业。

4.    在作业详细信息页面的尝试部分,选择查看日志记录。日志会在 CloudWatch 控制台中显示您的存储桶名称。