You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation部署AWS Spot Fleet时元数据命令解析错误排查

问题诊断与修复方案

核心错误原因

你的CloudFormation模板中AWS::CloudFormation::Init的commands结构不符合规范,这是触发解析错误的直接原因:

  • CFN Init要求commands是键值对对象,而非数组;
  • 每个命令需要一个唯一标识作为键(自定义命令名称即可),对应的值是包含command属性的对象,不能直接传入拼接后的命令字符串。

修正后的模板片段

将Metadata部分的commands修改为如下结构:

"Metadata": {
    "AWS::CloudFormation::Init" : {
        "commands": {
            "create_log_file": {
                "command": {
                    "Fn::Join": [
                        "",
                        [
                            "echo ls -l /var/log > /home/MyFile.txt"
                        ]
                    ]
                }
            },
            "set_log_permissions": {
                "command": "chmod 777 /var/log"
            }
        }
    }
}

额外必要配置

Spot Fleet实例不会自动执行CFN Init,你需要在UserData中添加触发脚本,确保元数据中的命令被执行。示例如下(补充到你的Fn::Join数组中):

#!/bin/bash
# 安装CFN工具(若镜像未预装)
yum install -y aws-cfn-bootstrap
# 触发CFN Init执行
/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyServer --region ${AWS::Region}

其他注意事项

  • 确保实例所在子网能访问AWS CloudFormation服务(私有子网需配置NAT网关或VPC端点);
  • 实例IAM角色需具备执行CFN Init的权限(允许访问CloudFormation相关资源)。

内容的提问来源于stack exchange,提问作者Orly Orly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:22