📅  最后修改于: 2023-12-03 14:59:26.182000             🧑  作者: Mango
AWS Batch 是一种全面托管的批量处理解决方案,允许您在 AWS 环境中高效地运行数百万个计算作业。 AWS Batch 移除了大量批处理任务管理的复杂性,并精简了计算资源的管理,从而使您能够使用自己的计算资源更有效地利用 AWS 的扩展性和弹性。
AWS Batch 适用于不同的场景,例如:
AWS Batch 具有以下特点:
要使用 AWS Batch ,您需要创建以下两个角色:
计划程序定义了要运行的作业和作业集。 它还定义了作业对操作系统的要求和要运行的命令。 计划程序使用 AWS 服务,例如 Amazon S3 和 Amazon DynamoDB ,来保存作业的输入和输出。
计算环境是一组计算资源,可以用来运行您的作业。您可以在 AWS Batch 上设置计算环境,以便它们自动启动和终止 EC2 实例。
您可以使用 AWS CLI 或 AWS Batch 控制台启动计算环境,并根据您的要求自动缩放。 AWS Batch 还支持使用 AWS CloudFormation 模板创建计算环境。
以下代码块是一个基本的 AWS Batch 代码示例:
---
AWSTemplateFormatVersion: '2010-09-09'
Resources:
BatchJobQueue:
Type: AWS::Batch::JobQueue
Properties:
ComputeEnvironmentOrder:
- Order: 1
ComputeEnvironment: !Ref BatchComputeEnvironment
Priority: 1
State: ENABLED
BatchComputeEnvironment:
Type: AWS::Batch::ComputeEnvironment
Properties:
Type: MANAGED
ServiceRole: !Ref BatchServiceRole
ComputeResources:
Type: EC2
MinvCpus: 0
MaxvCpus: 256
InstanceTypes:
- optimal
ImageId: ami-01234567890abcdef
Subnets:
- subnet-01234567890abcdef
SecurityGroupIds:
- sg-01234567890abcdef
BidPercentage: 100
SpotIamFleetRole: "arn:aws:iam::012345678901:role/aws-ec2-spot-fleet-tagging-role"
State: ENABLED
BatchServiceRole:
Type: AWS::IAM::Role
Properties:
RoleName: BatchServiceRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
-
Effect: Allow
Principal:
Service: batch.amazonaws.com
Action: sts:AssumeRole
Path: /
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole
...
此示例使用 AWS CloudFormation 模板来创建 AWS Batch 计算环境和作业队列。
AWS::Batch::ComputeEnvironment
类型定义了一个 Batch 计算环境,使用 EC2 实例类型和所需的安全性相关设置。它还指定实例将被分配的 subnet 和安全组,以及它所需的其他 AWS 资源权限。AWS::Batch::JobQueue
类型定义了作业队列,该队列由计算环境组成。它还指定作业的任务优先级和状态。 AWS::IAM::Role
类型定义了一个 IAM 角色,该角色授权 AWS Batch 服务访问您的 AWS 资源。AWS Batch 是 AWS 提供的一种高效批量处理解决方案。使用 AWS Batch ,您可以轻松地管理大量计算作业,将它们自动化地调度到计算环境中,并遵循所需的资源要求。 AWS Batch 还具有动态扩展和缩小计算资源的能力,并且易于使用和集成到现有应用程序中。