本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建计划 Amazon Batch 作业
您可以使用 Amazon EventBridge Scheduler 按定期计划(例如每小时提交一次)提交 Amazon Batch 任务,也可以在特定日期和时间提交一次。 EventBridge 调度器使用 IAM 执行角色根据您定义的计划调用 Amazon Batch SubmitJob API 操作,该角色授予 EventBridge 调度器代表您提交任务的权限。
此程序适用于亚马逊 ECS、亚马逊 EKS 和 Amazon Fargate 上的所有 Amazon Batch 任务。您还可以使用它来调度服务作业,例如 SageMaker 培训作业,方法是改为以 SubmitServiceJob API 操作为目标。
注意
预定规则是亚马逊的一项传统 EventBridge 功能。如果您已有提交 Amazon Batch 任务的预定规则,则这些规则将继续有效。对于新的日程安排,我们建议使用亚马逊 EventBridge日程表。
重要
您在本教程中创建的资源可能会向您的 Amazon
账户收费。定期计划会继续提交作业,并且每个提交的任务都使用计算资源,直到您删除该计划为止。完成后,删除您创建的资源以停止产生费用。有关更多信息,请参阅亚马逊的定价页面 EventBridge
先决条件
在开始之前,您需要:
-
作业队列和有效的作业定义。要创建这些,请参阅开始使用 Amazon Batch 教程。要调度服务作业,您需要一个服务环境和一个 SageMaker 作业队列。要创建这些,请参阅SageMaker 人工智能 Amazon Batch 入门。
-
计划程序代您 EventBridge 调用
SubmitJob的 IAM 执行角色。该角色必须包含授予batch:SubmitJob权限的策略。要安排服务作业,请改为授予batch:SubmitServiceJob权限。作为安全最佳实践,将策略范围限定为计划使用的作业队列和作业定义:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "batch:SubmitJob", "Resource": [ "arn:aws:batch:us-east-1:111122223333:job-queue/my-job-queue", "arn:aws:batch:us-east-1:111122223333:job-definition/my-job-definition:*" ] } ] }该角色还必须具有允许
scheduler.amazonaws.com服务主体代入该角色的信任策略。有关更多信息,请参阅 Amazon EventBridge Scheduler 用户指南中的设置执行角色。
第 1 步:定义时间表
在以下位置打开亚马逊 EventBridge 控制台https://console.aws.amazon.com/events/
。 -
在导航栏中,选择 Amazon Web Services 区域 要使用的。选择与您要向其提交任务的任务队列相同的区域。
-
在导航窗格的 “调度器” 下,选择 “计划”。
-
选择创建计划。
-
对于计划名称,输入计划的名称。该名称最多可包含 64 个字符,可以包括字母、数字、连字符 (-)、下划线 (_) 和句点 (.)。该名称在所选区域的计划组中必须是唯一的。
-
(可选)在描述中,输入时间表的描述。
-
对于计划组,保留默认值,或选择您创建的计划组。
-
对于 “发生次数”,选择以下选项之一:
-
定期计划 -重复运行作业。对于计划类型,选择Cron-based 计划并输入 cron 表达式以在特定时间(例如每个月的第一个星期一上午 8:00)运行作业,或者选择Rate-based 计划并输入费率表达式以固定速率(例如每 10 分钟)运行作业。有关更多信息,请参阅《亚马逊计划 EventBridge程序用户指南》中的 Amazon Sch EventBridge eduler 中的计划类型。
-
One-time 计划 -在您指定的日期和时间运行一次作业。
-
-
对于灵活的时间窗口,选择关闭以完全按计划运行作业,或者选择一个时间窗以允许 EventBridge 调度器在计划时间之后在该窗口内调用作业。
-
选择下一步。
第 2 步:选择目标
-
在 “选择目标” 页面上,选择 “所有 API”,然后搜索 “批处理” 。
-
选择 Amazon Batch,然后选择与您的任务类型相匹配的 API 操作:
-
SubmitJob— 用于在亚马逊 ECS、亚马逊 EKS 和 Amazon Fargate 上 Amazon Batch 工作。
-
SubmitServiceJob— 用于服务作业,例如 SageMaker 培训作业。
-
-
对于输入,提供 EventBridge 调度器作为 JSON 对象传递给 API 操作的请求参数。
重要
输入 JSON 中的参数名称必须采用 PascalCase (例如,
JobQueue),而不是 Amazon Batch API 参考请求语法中显示的 camelCase(例如jobQueue)。 -
选择下一步。
步骤 3:配置日程设置
-
(可选)在设置页面上,配置以下内容:
-
计划状态 -如果您不希望计划在创建后立即开始运行,请将其关闭。
-
计划完成后的操作 -选择 EventBridge调度器是否在上次调用后删除计划。
-
重试策略 -配置未处理事件的最大期限,以及 EventBridge 调度器在调用失败时重试调用的次数。
-
Dead-letter 队列 (DLQ) — 选择一个 Amazon SQS 队列来接收无法传送到目标的调用。
-
-
在 “权限” 中,选择 “使用现有角色”,然后选择您创建的作为先决条件的执行角色。
-
选择下一步。
步骤 4:审核并创建
-
查看时间表详情。要更改任何分区,请选择该分区旁边的编辑。完成后,选择 “创建计划” 。
计划运行后,您可以在 Amazon Batch 控制台的 “作业” 页面上验证作业是否已提交。
第 5 步:清除 资源
当您不再需要时间表时,将其删除以停止提交任务并避免产生费用。
-
在 EventBridge 控制台导航窗格的 “调度器” 下,选择 “计划”。
-
选择您创建的计划,选择 “删除”,然后确认删除。
-
(可选)如果您不再需要将创建的执行角色作为先决条件,请将其删除。有关更多信息,请参阅 IAM 用户指南中的删除 IAM 角色。
注意
删除计划不会影响已经提交的作业。要停止已经提交或正在运行的作业,请使用 TerminateJob API 操作。要停止服务任务,请使用 TerminateServiceJob API 操作。
有关创建计划的更多信息,请参阅《亚马逊 EventBridge计划程序用户指南》中的 Amazon S EventBridge cheduler 入门。