【发布时间】:2023-01-04 23:53:39
【问题描述】:
我正在尝试为 AWS 批处理作业使用启动模板。用户数据模板文件是:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
--==BOUNDARY==
Content-Type: text/cloud-boothook; charset="us-ascii"
#cloud-boothook
#!/bin/bash
cloud-init-per once docker_options echo 'OPTIONS="$${OPTIONS} --storage-opt dm.basesize=20G"' >> /etc/sysconfig/docker
--==BOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"
packages:
- amazon-efs-utils
runcmd:
- mkdir -p ${efs_directory}
- echo "${efs_id}:/ ${efs_directory} efs _netdev,tls,iam 0 0" >> /etc/fstab
- mount -a -t efs defaults
--==BOUNDARY==--
为启动模板生成用户数据的代码是:
resource "aws_launch_template" "launch_template" {
name = "launch_template"
update_default_version = true
user_data = base64encode(templatefile("${path.module}/launch_template_user_data.tpl", {
efs_id = aws_efs_file_system.efs.id
efs_directory = "/mnt/efs"
}))
}
MIME 多部分文件的 rules 是:
MIME 多部分文件由以下部分组成:
- 内容类型和部分边界声明:Content-Type:multipart/mixed;边界="==边界=="
- MIME 版本声明:MIME-Version: 1.0
- 一个或多个包含以下组件的用户数据块:
- 表示用户数据块开始的开放边界: --==边界==。您必须将此边界之前的行保留为空白。
- 块的内容类型声明:Content-Type: 文本/云配置;字符集 =“我们-ascii”。有关更多信息 内容类型,请参阅 Cloud-Init 文档。你必须保持 内容类型声明空白后的行。
- 用户数据的内容,例如 shell 命令列表或 云初始化指令。
- 表示 MIME 多部分结束的结束边界 文件:--==边界==--。你必须在关门前保持排队 边界空白。
据我所知,我遵守这些规则。为什么这个用户数据文件不是有效的 MIME 多部分文件?
【问题讨论】:
标签: amazon-web-services validation terraform mime