本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动模板支持
Amazon Batch支持将 Amazon EC2 启动模板与 EC2 计算环境一起使用。使用启动模板,您可以修改您的默认配置Amazon Batch无需创建自定义 AMI 即可计算资源。
上不支持启动模板AmazonFargate 资源。
您必须先创建启动模板,然后才能将其与计算环境关联。您可以在 Amazon EC2 控制台中创建启动模板,也可以使用Amazon CLI或者AmazonSDK。例如,以下 JSON 文件表示启动模板,它将调整 Docker 数据卷的默认大小。Amazon Batch计算资源 AMI 并将其设置为加密。
{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvdcz", "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
-
Amazon EC2 标签
以下启动模板参数是忽视通过Amazon Batch:
-
实例类型(在创建计算环境时指定所需的实例类型)
-
实例角色(在创建计算环境时指定所需的实例角色)
-
网络接口子网(在创建计算环境时指定所需的子网)
-
实例市场选项(Amazon Batch 必须控制 Spot 实例配置)
-
禁用 API 终止(Amazon Batch 必须控制实例生命周期)
Amazon Batch不支持使用新的启动模板版本来更新计算环境。如果更新启动模板,则必须使用新模板创建新计算环境以使更改生效。
启动模板中的 Amazon EC2 用户数据
您可以在由运行的启动模板中提供 Amazon EC2 用户数据cloud-init
启动模板中的 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或者AmazonSDK,你必须首先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 分段文件将配置计算资源以安装lustre2.10
从 Extras 库进行软件包并在处装载现有 FSx for Lustre 文件系统/scratch
和一个挂载名fsx
. 此示例适用于 Amazon Linux 2。有关其他 Linux 发行版的安装说明,请参阅安装 Lustre 客户端中的Amazon FSx for Lustre 用户指南. 有关更多信息,请参阅 。自动挂载您的 Amazon FSx 文件系统中的Amazon FSx for Lustre 用户指南.
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
" } ], }