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

AWS EC2实例启动时cloud-init中runcmd未执行问题排查

cloud-init runcmd未执行的常见原因及排查
  • YAML语法/格式错误:这是最容易踩的坑。cloud-init依赖严格的YAML格式,runcmd必须是数组结构,缩进要和其他模块保持统一。比如:
    错误写法:

    runcmd: touch /tmp/test.txt
    

    正确写法:

    runcmd:
      - touch /tmp/test.txt
      - aws route53 change-resource-record-sets --hosted-zone-id ZONEID --change-batch file:///tmp/change_dns.json
    

    检查要点:每个命令前必须加破折号,缩进用空格(别混用制表符),且层级和其他模块(如users、write_files)一致。

  • 模块执行配置异常:查看/etc/cloud/cloud.cfg中的cloud_config_modules列表,确认runcmd是否被包含在内。如果配置文件中移除了这个模块,或者把它放到了不会触发的阶段,就会导致不执行。

  • 键名拼写错误:比如误把runcmd写成run_cmd或commands,cloud-init识别不到这个模块,自然不会执行其中的命令。

  • cloud-init执行阶段限制:cloud-init默认仅在实例首次启动时完整执行配置。如果是重启实例,除非提前执行cloud-init clean或修改了preserve_hostname等参数,否则runcmd不会重复触发。不过你这里users和write_files都成功了,这条可以优先排除。

排查小技巧:

  1. 查看/var/log/cloud-init.log(不是cloud-init-output.log),里面会详细记录每个模块的加载、识别和执行状态,能直接看到runcmd是否被cloud-init处理。
  2. 用本地工具(比如yamllint命令)校验你的cloud-config内容,快速定位YAML语法问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:44:59