本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动模板支持
Amazon Batch支持将 Amazon EC2 启动模板与您的 EC2 计算环境一起使用。使用启动模板,您可以修改Amazon Batch计算资源的默认配置,而无需创建自定义 AMI。
注意
AmazonFargate 资源不支持启动模板。
您必须先创建启动模板,然后才能将其与计算环境关联。您可以在 Amazon EC2 控制台中创建启动模板。或者,您可以使用Amazon CLI或 SAmazon 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
有关启动模板的更多信息,请参阅《适用于 Linux Amazon EC2 用户指南》中的从启动模板启动实例。
如果使用启动模板来创建计算环境,则可以将以下现有计算环境参数移至启动模板:
注意
假设其中任何参数(Amazon EC2 标签除外)均在启动模板和计算环境配置中指定。然后,计算环境参数优先。Amazon EC2 标签在启动模板和计算环境配置之间合并。如果标签键发生冲突,则优先使用计算环境配置中的值。
-
Amazon EC2 key pair
-
Amazon EC2 AMI ID ID
-
安全组 ID
-
Amazon EC2 标签
以下启动模板参数被忽略Amazon Batch:
-
实例类型(在创建计算环境时指定所需的实例类型)
-
实例角色(在创建计算环境时指定所需的实例角色)
-
网络接口子网(在创建计算环境时指定所需的子网)
-
实例市场选项(Amazon Batch 必须控制 Spot 实例配置)
-
禁用 API 终止(Amazon Batch 必须控制实例生命周期)
Amazon Batch仅在基础架构更新期间使用新启动模板版本更新启动模板。有关更多信息,请参阅更新计算环境:
启动模板中的 Amazon EC2 用户数据
您可以在启动模板中提供 Amazon EC2 用户数据。
启动模板中的 Amazon EC2 用户数据必须采用 MIME 分段归档
如果你正在使用Amazon CloudFormation,则该AWS::CloudFormation::Init类型可以与 cfn-init 帮助脚本一起使用,以执行常见的配置场景。
MIME 分段文件包含以下组成部分:
-
内容类型和段边界声明:
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
-
MIME 版本声明:
MIME-Version: 1.0
-
一个或多个包含以下组件的用户数据块:
-
开口边界,表示用户数据块的开口边
--==BOUNDARY==
界:必须将此边界前的线留空。 -
数据块的内容类型声明:
Content-Type:
。有关内容类型的更多信息,请参阅 Cloud-Init 文档text/cloud-config
; charset="us-ascii"。必须将内容类型声明后面的行留空。 -
用户数据的内容,例如 Shell 命令或
cloud-init
指令的列表。
-
-
标志着 MIME 多部分文件结束的闭合边界:
--==BOUNDARY==--
. 必须将闭合边界前的直线留空。
以下是 MIME 分段文件的示例,您可以用它来创建您自己的文件。
注意
如果您将用户数据添加到 Amazon EC2 控制台中的启动模板中,则可以将其粘贴为纯文本。或者,您可以从文件中上传。如果您使用Amazon CLI或Amazon SDK,则必须先对用户数据进行base64
编码,然后在调用时将该字符串作为UserData
参数值提交 CreateLaunchTemplate,如此 JSON 文件所示。
{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "
ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW...
" } }
示例:装载现有的 Amazon EFS 文件系统
此示例 MIME 多部分文件将计算资源配置为安装amazon-efs-utils
软件包并在上安装现有的 Amazon EFS 文件系统/mnt/efs
。
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"
packages:
- amazon-efs-utils
runcmd:
- file_system_id_01=fs-abcdef123
- efs_directory=/mnt/efs
- mkdir -p ${efs_directory}
- echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab
- mount -a -t efs defaults
--==MYBOUNDARY==--
示例:覆盖默认的 Amazon ECS 容器代理配置
此示例 MIME 分段文件将覆盖计算资源的默认 Docker 映像清除设置。
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"
#!/bin/bash
echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config
echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config
--==MYBOUNDARY==--
示例:装载现有的 Amazon FSx for Lustre 文件系统
此示例 MIME 多部分文件将计算资源配置为从 Extras Library 安装lustre2.10
软件包,并将现有 FSx for Lustre 文件系统挂载在上/scratch
,安装名称为fsx
。此示例适用于Amazon Linux 2。有关其他 Linux 发行版的安装说明,请参阅 Amazon FSx for Lustre 用户指南中的安装 Lustre 客户端。有关更多信息,请参阅《Amazon FSx for Lustre 用户指南》中的自动装载 Amazon FSx 文件系统。
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"
runcmd:
- file_system_id_01=fs-0abcdef1234567890
- region=us-east-2
- fsx_directory=/scratch
- amazon-linux-extras install -y lustre2.10
- mkdir -p ${fsx_directory}
- mount -t lustre ${file_system_id_01}.fsx.${region}.amazonaws.com@tcp:fsx
${fsx_directory}
--==MYBOUNDARY==--
在容器属性的 volumes 和 mountPoints 成员中,装载点必须映射到容器中。
{ "volumes": [ { "host": { "sourcePath": "
/scratch
" }, "name": "Scratch
" } ], "mountPoints": [ { "containerPath": "/scratch
", "sourceVolume": "Scratch
" } ], }