使用 AWS Batch,您只需打包批量任务的代码,指定其依赖关系并使用 AWS 管理控制台、CLI 或软件开发工具包提交批量任务。AWS Batch 不仅允许指定执行参数和任务依赖关系,还可以促进与一系列常用批量计算工作流引擎及语言 (如 Pegasus WMS、Luigi 和 AWS Step Functions) 的集成。AWS Batch 会根据您的任务要求以动态方式有效地预置和扩展 Amazon EC2 实例和竞价型实例。AWS Batch 提供默认任务队列和计算环境定义,以便您快速开始使用。
特性
精细任务定义
借助 AWS Batch,可以指定资源要求 (如 vCPU 和内存、AWS Identity and Access Management (IAM) 角色、卷挂载点、容器属性及环境变量) 以定义如何执行任务。AWS Batch 执行任务,就像容器化应用程序在 Amazon ECS 上运行一样。
简单的任务依赖关系建模
借助 AWS Batch,可以定义不同任务之间的依赖关系。例如,您的批量任务可能分为三个不同的处理阶段,且各个阶段所需资源不同。有了依赖关系,您可以创建资源要求不同的三个任务,其中下一个任务均依赖于上一个任务。
支持流行的工作流引擎
AWS Batch 可与商用开源工作流引擎和语言集成 (如 Pegasus WMS 和 Luigi),让您能够使用熟悉的工作流语言为批量计算管道建模。
动态计算资源预置和扩展
AWS Batch 提供托管计算环境,此类环境可根据所提交任务的卷和资源要求以动态方式预置和扩展计算资源。您可以结合如下要求配置 AWS Batch 托管计算环境:EC2 实例类型、VPC 子网配置、跨所有实例的最少/最多/基本 vCPU 及竞价出价等。
此外,如果您需要针对 EC2 实例使用不同的配置 (如更大的 EBS 卷或另一种操作系统) 而不是 AWS Batch 托管计算资源所提供的配置,您还可以在 AWS Batch 非托管计算资源中预置和管理自己的计算资源。您只需预置含有 Amazon ECS 代理的 EC2 实例并运行支持的 Linux 和 Docker 版本。然后,AWS Batch 会在您预置的 EC2 实例上执行批量任务。
基于优先级的任务安排
借助 AWS Batch,可以设置多个具有不同优先级的队列。批量任务会一直存储在队列中,直到计算资源可用于执行任务。AWS Batch 计划程序会根据每个任务的资源要求评估已提交给队列的任务的执行时间、执行位置及执行方式。该计划程序会评估每个队列的优先级并按***计算资源 (如内存与优化型 CPU) 的优先级执行任务,只要这些任务依赖关系确定即可。
动态竞价
借助 AWS Batch,可以轻松使用 Amazon EC2 竞价进一步降低执行批量任务所需费用。AWS Batch 会根据任务数量和任务资源要求及针对计算资源设置的配置参数,代表您以动态方式对竞价型实例进行出价。
集成的监控和日志记录
AWS Batch 在 AWS 管理控制台中显示批量任务的主要操作指标。您可以查看与计算容量相关的指标以及执行中、待执行和已完成的任务。您可以在 AWS 管理控制台中查看您的任务日志 (如 STDERR 和 STDOUT),也可以将其写入 Amazon CloudWatch Logs。
精细访问控制
AWS Batch 使用 IAM 控制和监控您的任务可访问的 AWS 资源,如 Amazon DynamoDB 表。此外,您还可以通过 IAM 为组织中的不同用户定义策略。比如,管理员可以拥有对所有 AWS Batch API 操作的完全访问权限,开发人员可以拥有与配置计算环境及注册任务相关的有限权限,而最终用户只能拥有提交和删除任务所需的权限。