

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

# 第 3 步：创建启动模板并将其附加到计算环境
<a name="batch-host-logs-create-launch-template"></a>

当实例启动时，user-data脚本会自动安装Fluent Bit，从 IMDSv2 检索实例 ID，从 Amazon S3 同步配置，然后启动服务。Fluent Bit有关启动模板的更多信息，请参阅[将 Amazon EC2 启动模板与 Amazon Batch](launch-templates.md)。有关 IMDS 配置的更多信息，请参阅[实例元数据服务（IMDS）配置](imds-compute-environments.md)。

有关示例user-data脚本，请参阅[配套 GitHub 存储库](https://github.com/aws-samples/sample-batch-host-level-logs)。使用该`launch-template-userdata-minimal.txt`文件作为启动模板。此文件不包括注释以减user-data小大小。该`launch-template-userdata.txt`文件是注释版本，仅供参考。使用前请替换模板中的以下占位符：
+ `<BUCKET_NAME>`— 您的亚马逊 S3 存储桶的名称。
+ `<FLUENT_BIT_VERSION>`— 要安装的Fluent Bit版本。留空以安装最新的可用版本。
+ [第 1 步：设置 Amazon S3 存储桶和 Fluent Bit 配置](batch-host-logs-s3-setup.md)
+ [步骤 2：为您的实例角色配置 IAM 权限](batch-host-logs-configure-iam.md)

------
#### [ Amazon Console ]

创建启动模板：

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择 **Launch Templates**。

1. 选择**Create launch template**（创建启动模板）。

1. 在 “**启动模板名称” 中**，输入一个名称，例如`{{batch-host-logs}}`。

1. 展开**高级详细信息**。

1. 对于 **Metadata version**（元数据版本），选择 **V2 only (token required)**（仅限 V2（需要令牌））。

1. 对于**元数据响应跳数限制**，请输入`2`。

1. 滚动到**用户数据**并粘贴[配套 GitHub 存储库中的user-data脚本](https://github.com/aws-samples/sample-batch-host-level-logs)。将 {{`<BUCKET_NAME>`}}替换为存储桶名称。{{`<FLUENT_BIT_VERSION>`}}替换为所需的Fluent Bit版本，或将最新版本留空。

1. 选择**Create launch template**（创建启动模板）。

创建计算环境：

1. 在处打开 Amazon Batch 控制台[https://console.aws.amazon.com/batch/](https://console.amazonaws.cn/batch/)。

1. 在导航窗格中，选择**计算环境**。

1. 选择**创建**。

1. 在**计算环境的配置**中，选择 **Amazon Elastic Compute Cloud (Amazon EC2)**。

1. 对于**编排类型**，请选择**托管**。

1. 对于 “**名称”**，输入一个名称，例如`{{my-host-logs-ce}}`。

1. 对于**实例角色**，选择您在步骤 2 中更新或创建的实例角色，例如`ecsInstanceRole`。

1. 选择**下一步**。

1. 在**实例配置下**，展开**启动模板**并选择您创建的模板。

1. 填写其余字段，然后选择**创建计算环境**。

------
#### [ Amazon CLI ]

创建启动模板。将user-data脚本从[配套 GitHub 存储库保存](https://github.com/aws-samples/sample-batch-host-level-logs)到文件中，然后使用 base64 对其进行编码：

```
aws ec2 create-launch-template \
    --launch-template-name {{batch-host-logs}} \
    --launch-template-data '{
        "MetadataOptions": {
            "HttpTokens": "required",
            "HttpPutResponseHopLimit": 2
        },
        "UserData": "{{BASE64_ENCODED_USER_DATA}}"
    }'
```

使用启动模板创建计算环境：

```
aws batch create-compute-environment \
    --compute-environment-name {{my-host-logs-ce}} \
    --type MANAGED \
    --compute-resources '{
        "type": "EC2",
        "minvCpus": 0,
        "maxvCpus": 256,
        "instanceTypes": ["optimal"],
        "subnets": ["{{subnet-12345678}}"],
        "securityGroupIds": ["{{sg-12345678}}"],
        "instanceRole": "arn:aws:iam::{{111122223333}}:instance-profile/ecsInstanceRole",
        "launchTemplate": {
            "launchTemplateName": "{{batch-host-logs}}",
            "version": "$Latest"
        }
    }'
```

------

**注意**  
元数据响应跳数限制在启动模板`2`中设置为，因为在作业容器中运行的应用程序需要额外的网络跳数才能到达 IMDSv2 端点。如果没有此设置，来自容器的 IMDSv2 请求将失败。