使用 Amazon EC2 用户数据 - AWS PC

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

使用 Amazon EC2 用户数据

您可以在实例启动时cloud-init运行的启动模板中提供 EC2 用户数据。内容类型的用户数据块在实例向 AWS PCS API 注册之前cloud-config运行,而内容类型的用户数据块在注册完成后但在 Slurm 守护程序启动之前text/x‑shellscript运行。有关内容类型的更多信息,请参阅 cloud-init 文档。

我们的用户数据可以执行常见的配置场景,包括但不限于以下情况:

启动模板中的用户数据必须采用 MIME 多部分存档格式。这是因为您的用户数据与在节点组中配置节点所需的其他 AWS PCS 用户数据合并。您可以将多个用户数据块合并到一个 MIME 分段文件中。

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

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

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

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

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

    • 区块的内容类型声明:Content-Type: text/cloud-config; charset="us-ascii"Content-Type: text/x-shellscript; charset="us-ascii"。必须将内容类型声明之后的行留空。

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

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

注意

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

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