【问题标题】:Launch Template UserData is not MIME multipart format启动模板用户数据不是 MIME 多部分格式
【发布时间】: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


    【解决方案1】:

    您是否正在尝试为 AWS Batch 创建此启动模板?如果是,您必须在创建 AWS Batch 计算环境时告知放入最新版本的启动模板 -

    launch_template{
          launch_template_id = aws_launch_template.launch_template.id
          version = aws_launch_template.launch_template.latest_version 
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 2022-12-24
      • 2012-11-01
      • 2017-12-18
      • 1970-01-01
      • 2017-05-12
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多