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

如何通过CloudFormation Init创建无内容的空文件?

如何通过CloudFormation Init创建无内容的空文件?

我完全懂你碰到的这个坑——直接写content: ""或者省略content字段都会触发那个“File specified without source or content”错误,这是因为YAML会把空字符串解析成空值,CFN-init根本不认为这是有效的内容输入。

这里有两个靠谱的解决办法:

方法一:用Base64编码空字符串

通过!Base64 ""来定义content字段,这样CFN-init会把它识别为有效的内容(解码后就是空的),就能顺利创建出空文件了。修改后的模板片段如下:

Resources:
  Instance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          files:
            /var/log/app.log:
              content: !Base64 ""
              mode: '000646'

方法二:通过commands执行touch命令

如果你更习惯用Linux命令的方式,也可以在CFN-init的commands部分加一个touch命令来创建空文件,之后再通过files字段设置好文件权限:

Resources:
  Instance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          commands:
            01_create_empty_log_file:
              command: "touch /var/log/app.log"
          files:
            /var/log/app.log:
              mode: '000646'

两种方法都能解决你的问题,你可以根据自己的使用习惯选就行。

备注:内容来源于stack exchange,提问作者zmunk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:17:32