本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:Amazon EC2 编排入门
Amazon Elastic Compute Cloud (Amazon EC2) 在 AWS Cloud 中提供可扩展的计算容量。使用 Amazon EC2 可避免前期的硬件投入,因此您能够快速开发和部署应用程序。
您可以使用 Amazon EC2 启动所需数量的虚拟服务器,配置安全性和联网以及管理存储。Amazon EC2 可让您扩展或缩减以处理需求变化或使用高峰,从而减少预测流量的需求。
创建计算环境
要为 Amazon EC2 编排创建计算环境,请执行以下操作:
-
对于选择编排类型,选择 Amazon Elastic Compute Cloud (Amazon EC2)。
-
选择下一步。
-
在名称的计算环境配置部分,为您的计算环境指定唯一名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。
-
对于 实例角色,请选择使用附加了所需 IAM 权限的现有实例配置文件。此实例配置文件允许计算环境中的 Amazon ECS 容器实例调用所需的 AWS API 操作。有关更多信息,请参阅 Amazon ECS 实例角色。
-
(可选)标签是为资源分配的标记。要添加标签或 Amazon EC2 标签,请展开标签,然后选择添加标签。输入一个键值对,然后再次选择添加标签。
重要
如果选择添加标签,则必须输入键值对,然后再次选择添加标签或选择移除标签。
-
(可选)在使用 Amazon EC2 竞价型实例的实例配置部分,开启使用竞价型实例启用。
-
(仅限 Spot)对于按需价格的最大百分比,请输入您要为竞价资源支付的最大按需定价百分比。
-
(可选)(仅限 Spot)对于竞价型实例集角色,选择一个现有的 Amazon EC2 竞价型实例集 IAM 角色以应用于您的 Spot 计算环境。如果您没有现有的 Amazon EC2 竞价型实例集 IAM 角色,则必须先创建一个。有关更多信息,请参阅 亚马逊EC2现货舰队的角色。
重要
要在创建时标记竞价型实例,您的 Amazon EC2 竞价型实例集 IAM 角色必须使用较新的 AmazonEC2SpotFleetTaggingRole 托管策略。AmazonEC2SpotFleetRole 托管策略不具有标记竞价型实例所需的权限。有关更多信息,请参阅创建时未标记的竞价型实例 和标记资源。
-
对于 Minimum vCPUs,选择您的计算环境应保留的 EC2 vCPU 的最小数目,而无论作业队列需求如何。
-
对于 Desired vCPUs,请选择您的计算环境在启动时应使用的 EC2 vCPU 数量。随着作业队列需求的增加,AWS Batch 所需的 vCPU 数量增加并添加 EC2 实例。vCPU 的数量可以增加到 vCPU 的最大数量。随着需求减少,AWS Batch 减少所需的 vCPU 数量并移除实例。一直减少到 vCPU 的最小数量。
-
对于 Maximum vCPUs,选择您的计算环境可以横向扩展到的 EC2 vCPU 的最大数目,而无论作业队列需求如何。
-
对于允许的实例类型,选择可启动的 Amazon EC2 实例类型。您可以指定实例系列以在这些系列中启动任何实例类型(例如,
c5
、c5n
或p3
),或者,您可以指定系列中的特定大小(例如c5.8xlarge
)。Metal 实例类型不在实例系列中。例如,c5
不包括c5.metal
。还可以通过选择optimal
来选择符合作业队列需求的实例类型(从 C4、M4 和 R4 实例系列中)。注意
在创建一个计算环境时,为该计算环境选择的实例类型必须共享同一架构。例如,您不能在同一个计算环境中混用 x86 和 ARM 实例。
注意
AWS Batch 会根据您的作业队列中所需的数量扩展 GPU。要使用 GPU 计划,计算环境必须包含
p2
,p3
,p4
,p5
,g3
,g3s
,g4
或g5
系列的实例类型。注意
目前,
optimal
使用 C4、M4 和 R4 实例系列中的实例类型。在没有属于这些实例系列的实例类型的 AWS 区域 中,使用 C5、M5 和 R5 实例系列的实例类型。 -
展开其他配置。
-
(可选)对于置放群组,输入置放群组名称以对计算环境中的资源进行分组。
-
(可选)对于 EC2 密钥对,请在连接到实例时选择公钥和私有密钥对作为安全凭证。有关 Amazon EC2 密钥对的更多信息,请参阅 Amazon EC2 密钥对和 Linux 实例。
-
对于分配策略,选择在从允许的实例类型列表中选择实例类型时要使用的分配策略。对于 EC2 按需计算环境,BEST_FIT_PROGRESSIVE 通常是更好的选择,而对于 EC2 Spot 计算环境,SPOT_CAPACITY_OPTIMIZED 则是更好的选择。有关更多信息,请参阅 AWS Batch 的实例类型分配策略。
-
(可选)对于 EC2 配置,请选择添加 EC2 配置。请选择映像类型和映像 ID 覆盖值来为 AWS Batch 提供信息,从而为计算环境中的实例选择亚马逊机器映像(AMI)提供信息。如果未为每种映像类型指定映像 ID 覆盖,则 AWS Batch 选择最近经 Amazon ECS 优化的 AMI。如果未指定映像类型,则非 GPU、非 AWS Graviton 实例默认为 Amazon Linux 2。
重要
要使用自定义 AMI,请选择映像类型,然后在映像 ID 覆盖框中输入自定义 AMI ID。
- Amazon Linux 2
-
所有基于 AWS Graviton 的实例系列的默认值(例如
C6g
、M6g
、R6g
和T4g
),可用于所有非 GPU 实例类型。 - Amazon Linux 2(GPU)
-
所有 GPU 实例系列的默认值(例如
P4
和G4
),可用于所有非基于 AWS Graviton 的实例类型。 - Amazon Linux
-
可用于非 GPU、非 AWS Graviton 实例系列。对 Amazon Linux AMI 的标准支持已结束。有关更多信息,请参阅 Amazon Linux AMI
。
注意
您为计算环境选择的 AMI 必须与您希望用于该计算环境的实例类型的架构匹配。例如,如果您的计算环境使用 A1 实例类型,则您选择的计算资源 AMI 必须支持 Arm 实例。Amazon ECS 同时提供经过 Amazon ECS 优化的 Amazon Linux 2 AMI 的 x86 和 Arm 版本。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的经过 Amazon ECS 优化的 Amazon Linux 2 AMI。
-
(可选)对于启动模板,选择现有的 Amazon EC2 启动模板来配置您的计算资源。模板的默认版本会自动填充。有关更多信息,请参阅 将 Amazon EC2 启动模板与 AWS Batch。
注意
在启动模板中,您可以指定自己创建的自定义 AMI。
-
(可选)对于 Launch template version (启动模板版本),输入
$Default
、$Latest
或要使用的特定版本号。重要
创建计算环境后,即使更新启动模板的
$Default
或$Latest
版本,也不会更改使用的启动模板版本。要使用新的启动模板版本,请先创建新的计算环境,将新的计算环境添加到现有作业队列。然后,从作业队列中移除旧的计算环境,然后删除旧的计算环境。 -
在网络配置部分:
-
对于虚拟私有云(VPC)ID,选择一个 Amazon VPC。
-
对于子网,将列出您的 AWS 账户 子网。如果要创建一组自定义子网,请选择清除子网,然后选择所需的子网。
重要
计算资源必须通过 VPC 端点或多个公有 IP 地址与 Amazon ECS VPC 端点通信。有关更多信息,请参阅 Amazon ECS 接口 VPC 端点 (AWS PrivateLink)。如果您的实例未配置VPC 端点或公有 IP 地址,则可以使用网络地址转换(NATI)。有关 NAT 的更多信息,请参阅 NAT 网关以及 创建 Virtual Private Cloud 。
-
对于安全组,选择要与实例关联的 Amazon EC2 安全组。如果要创建一组自定义的安全组,请选择清除安全组。然后,选择您想要的安全组。
-
-
选择下一步。
创建作业队列
作业队列存储您提交的作业,直到 AWS Batch 调度器在您的计算环境中的资源上运行作业为止。有关更多信息,请参阅 作业队列
要为 Amazon EC2 编排创建作业队列,请执行以下操作:
-
在 作业队列配置部分的名称中,为您的计算环境指定一个唯一的名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。
-
在优先级中,为作业队列输入 0 到 100 之间的整数。
重要
AWS Batch 调度器会为较大的整数值分配更高的优先级。
-
选择下一步。
创建任务定义
AWS Batch作业定义指定作业的运行方式。虽然每个作业必须引用作业定义,但可在运行时覆盖作业定义中指定的许多参数。
创建作业定义:
-
在常规配置部分:
-
在名称的常规配置部分,为您的计算环境指定一个唯一的名称。名称长度不超过 128 个字符。名称可以包含大小写字母、数字、连字符(-)和下划线(_)。
-
(可选)在执行超时中,输入终止未完成作业后的持续时间(以秒为单位)。
重要
最小超时值为 60 秒。
-
(可选)标签是为资源分配的标记。要添加标签,请展开标签,然后选择添加标签。输入一个键值对,然后再次选择添加标签。
重要
如果选择添加标签,则必须输入键值对,然后再次选择添加标签或选择移除标签。
-
(可选)开启传播标签以将标签传播到 Amazon Elastic Container Service 任务。
-
-
在容器配置部分:
-
在映像中,输入用于启动容器的映像的名称。默认情况下,Docker Hub 注册表中的所有映像均可用。您也可以使用 repository-url/image:tag 格式指定其他存储库。该参数最长可包含 255 个字符。该参数可以包含大小写字母、数字、连字符(-)、下划线(_)、冒号(:)、句点(.)、正斜杠(/)和数字符号(#)。此参数可映射到 Docker Remote API
的创建容器 部分中的 Image
和 docker run的 IMAGE
参数。注意
Docker 映像架构必须与为它们安排的计算资源的处理器架构相匹配。例如,基于 Arm 的 Docker 映像只能在基于Arm的计算资源上运行。
-
Amazon ECR 公有存储库中的映像使用完整的
registry/repository[:tag]
或registry/repository[@digest]
命名惯例(例如,public.ecr.aws/
)。registry_alias
/my-web-app
:latest
-
Amazon ECR 存储库中的映像使用完整的
registry/repository:tag
命名惯例(例如,aws_account_id
.dkr.ecr.region
.amazonaws.com/
)。my-web-app
:latest
-
Docker Hub 上的官方存储库中的映像使用一个名称 (例如,
ubuntu
或mongo
)。 -
Docker Hub 上其他存储库中的映像通过组织名称 (例如,
amazon/amazon-ecs-agent
) 进行限定。 -
其他在线存储库中的映像由域名 (例如,
quay.io/assemblyline/ubuntu
) 进行进一步限定。
-
-
对于 Command,指定要传递到容器的命令。此参数映射到 Docker Remote API
创建容器 部分中的 Cmd
,以及docker run的 COMMAND
参数。有关 DockerCMD
参数的更多信息,请参阅 https://docs.docker.com/engine/reference/builder/#cmd。 注意
您可以在命令中使用参数替代默认值和占位符。有关更多信息,请参阅 参数。
-
(可选)对于执行角色,指定一个 IAM 角色,该角色授予 Amazon ECS 容器代理代表您进行 AWS API 调用的权限。此功能使用 Amazon ECS IAM 角色执行任务。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon ECS 任务执行 IAM 角色。
-
(可选)在作业角色配置中,请选择有权访问 AWS API 的 IAM 角色。此功能使用 Amazon ECS IAM 角色执行任务。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的任务的 IAM 角色。
注意
此处仅显示具有 Amazon Elastic Container Service Task Role 信任关系的角色。有关为 AWS Batch 作业创建 IAM 角色的更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的为任务创建 IAM 角色和策略。
-
(可选)您可以将参数作为键值映射添加到作业定义中,以覆盖作业定义的默认值。若要添加参数:
-
对于参数,选择添加参数。输入键值对,然后再次选择添加参数。
重要
如果选择添加参数,则必须至少配置一个参数或选择移除参数。
-
-
在vCPU的环境配置部分中,指定要为容器预留的 vCPU 数量。此参数将映射到 Docker Remote API
的创建容器 部分中的 CpuShares
以及docker run的 --cpu-shares
选项。每个 vCPU 相当于 1024 个 CPU 份额。 -
对于内存,指定要提供给作业容器的内存硬限制 (以 MiB 为单位)。如果您的容器尝试使用超出此处指定的内存,该容器将被终止。此参数将映射到 Docker Remote API
的创建容器 部分中的 Memory
以及docker run的 --memory
选项。 -
在 GPU 数量中,选择要为容器预留的 GPU 数量。
-
(可选)对于环境变量配置,请选择添加环境变量以添加要传递到容器的环境变量。此参数将映射到 Docker Remote API
的创建容器 部分中的 Env
以及docker run的 --env
选项。 -
(可选)对于密钥,选择添加密钥,将密钥添加为名称-值对。这些密钥暴露在容器中。有关更多信息,请参阅 LogConfiguration:secretOptions。
-
(可选)在 Linux 配置部分中:
-
对于 User,输入要在容器内使用的用户名。此参数将映射到 Docker Remote API
的创建容器 部分中的 User
以及docker run的 --user
选项。 -
要授予作业容器对主机实例(类似于
root
用户)的更高权限,请向右拖动权限滑块。此参数将映射到 Docker Remote API的创建容器 部分中的 Privileged
以及docker run的 --privileged
选项。 -
开启启用 Init 处理以在容器内运行
init
进程。该进程转发信号和获得进程。
-
-
(可选)在文件系统配置部分:
-
开启启用只读文件系统以移除对卷的写入权限。
-
在共享内存大小中,输入
/dev/shm
卷的大小(以 MiB 为单位)。 -
在最大交换大小中,输入容器可使用的总交换内存量(以 MiB 为单位)。
-
在 Swappiness 中输入一个介于 0 和 100 之间的值,以指示容器的 swappiness 行为。如果不指定值且启用了交换,则值默认值为 60。有关更多信息,请参阅 LinuxParameters:swappiness。
-
(可选)展开 其他配置。
-
对于 Tmpfs,请选择添加 tmpfs 以添加
tmpfs
挂载。 -
对于设备,选择添加设备以添加设备:
-
对于容器路径,指定容器实例中的路径以公开映射到主机实例的设备。如果将其留空,则在容器中使用主机路径。
-
对于主机路径,指定主机实例中设备的路径。
-
对于权限,选择要应用于设备的一个或多个权限。可用权限包括读取、写入和 MKNOD。
-
-
(可选)对于 Ulimits 配置,请选择添加 ulimit 为容器添加一个
ulimits
值。输入名称、软限制和硬限制值,然后选择添加 ulimit。
-
-
-
选择下一步。
创建作业
要创建作业,请执行以下操作:
-
在作业配置部分的名称中,为该作业指定一个唯一的名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。
-
选择下一步。
审核和创建
在查看和创建页面上,检查配置步骤。如果需要进行更改,请选择 Edit(编辑)。完成后,选择创建资源。