使用 Amazon EC2 启动模板和 Amazon Batch - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EC2 启动模板和 Amazon Batch

Amazon Batch 支持在您的 EC2 计算环境中使用 Amazon EC2 启动模板。使用启动模板,您可以修改 Amazon Batch 计算资源的默认配置,而无需创建自定义配置 AMIs。

注意

F Amazon argate 资源不支持启动模板。

您必须先创建启动模板,然后才能将其与计算环境关联。您可以在 Amazon EC2 控制台创建启动模板。或者,您可以使用 Amazon CLI 或 S Amazon DK。例如,以下 JSON 文件表示一个启动模板,该模板可调整默认 Amazon Batch 计算资源 AMI 的 Docker 数据量的大小,并将其设置为加密。

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

您可以通过将 JSON 保存到调用的文件中lt-data.json并运行以下 Amazon CLI 命令来创建之前的启动模板。

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

有关启动模板的更多信息,请参阅《Amazon EC2 用户指南》中的从启动模板启动实例

如果使用启动模板来创建计算环境,则可以将以下现有计算环境参数移至启动模板:

注意

假设在启动模板和计算环境配置中同时指定其中任意参数(Amazon EC2 标签除外)。然后,计算环境参数优先。Amazon EC2 标签在启动模板和计算环境配置之间合并。如果标签键发生冲突,则计算环境配置中的值优先。

  • Amazon EC2 密钥对

  • Amazon EC2 AMI ID

  • 安全组 IDs

  • Amazon EC2 标签

以下启动模板参数将被忽略 Amazon Batch:

  • 实例类型(在创建计算环境时指定所需的实例类型)

  • 实例角色(在创建计算环境时指定所需的实例角色)

  • 网络接口子网(在创建计算环境时指定所需的子网)

  • 实例市场选项(Amazon Batch 必须控制竞价型实例配置)

  • 禁用 API 终止(Amazon Batch 必须控制实例生命周期)

Amazon Batch 仅在基础架构更新期间使用新的启动模板版本更新启动模板。有关更多信息,请参阅 在 Amazon Batch 中更新计算环境

默认启动模板和覆盖启动模板

您可以为计算环境定义默认启动模板,并为特定实例类型和系列定义覆盖启动模板。这可能会非常实用,因此计算环境中的大多数实例类型都使用默认模板。

可以使用替换变量 $Default$Latest,而不指定特定的版本。如果未提供覆盖启动模板,则会自动应用默认启动模板。

如果您使用$Default$Latest变量,则 Amazon Batch 将在创建计算环境时应用当前信息。如果 future 的默认版本或最新版本发生变化,则必须通过UpdateComputeEnvironment或通过 Amazon Web Services 管理控制台 -来更新信息 Amazon Batch。

为提供更好的灵活性,您可以定义将应用于特定计算实例类型或系列的覆盖启动模板。

注意

您最多可以为每个计算环境指定十(10)个覆盖启动模板。

使用 targetInstanceTypes 参数来选择应使用此覆盖启动模板的实例类型或系列。实例类型或系列必须首先由 instanceTypes 参数标识。

如果您定义了覆盖启动模板,后来决定将其移除,则可以在 UpdateComputeEnvironment API 操作中传递一个空数组来取消设置 overrides 参数。您也可以选择在提交 UpdateComputeEnvironment API 操作时不包含 overrides 参数。欲了解更多信息,请参阅 LaunchTemplateSpecification.overrides

有关更多信息,请参阅 Amazon Batch API 参考指南LaunchTemplateSpecificationOverride.targetInstanceTypes中的。

启动模板中的 Amazon EC2 用户数据

在启动实例时,您可以使用由cloud-init运行的启动模板中提供 Amazon EC2 用户数据。您的用户数据可以执行常见的配置方案,包括但不限于:

启动模板中用于托管节点组的 Amazon EC2 用户数据必须采用 MIME 分段归档格式。这是因为您的用户数据与配置计算资源所需的其他 Amazon Batch 用户数据合并。您可以将多个用户数据块合并到一个 MIME 分段文件中。例如,您可能希望将配置 Docker 进程守护程序的云 boothook 与为 Amazon ECS 容器代理写入配置信息的用户数据 Shell 脚本合并。

如果您正在使用 Amazon CloudFormation,则该AWS::CloudFormation::Init类型可以与 cfn-in it 帮助脚本一起使用以执行常见的配置场景。

MIME 分段文件包含以下组成部分:

  • 内容类型和段边界声明:Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • MIME 版本声明:MIME-Version: 1.0

  • 一个或多个用户数据块,其包含以下组成部分:

    • 开口边界,表示用户数据块的开头:--==BOUNDARY==必须将此边界之前的行留空。

    • 数据块的内容类型声明:Content-Type: text/cloud-config; charset="us-ascii"。有关内容类型的更多信息,请参阅 Cloud-Init 文档。必须将内容类型声明之后的行留空。

    • 用户数据的内容,例如,Shell 命令或 cloud-init 指令的列表。

  • 封闭边界,表示 MIME 分段文件的结尾:--==BOUNDARY==--必须将此闭合边界之前的行留空。

注意

如果将用户数据添加到 Amazon EC2 控制台中的启动模板,则可以将其作为纯文本粘贴或从文件进行上载。或者,您可以从文件上传它。如果您使用 Amazon CLI 或 Amazon SDK,则必须先对用户数据进行base64编码,然后在调用时将该字符串作为UserData参数值提交 CreateLaunchTemplate,如此 JSON 文件所示。

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }