有没有办法告诉cfn-init使用从磁盘加载的自定义JSON文件?这样我就可以快速解决问题,否则更改AWS::CloudFormation::Init
部分的唯一方法是删除堆栈并重新创建它。
我宁愿只对我的template.json
进行更改,然后告诉类似 cfn-init -f C:template.json ...
的东西,以便它使用C:template.json
而不是从169.254.169.254
或以它的方式获取模板。
事实证明,cfn-init 确实接受一个文件,但该文件需要将 "Metadata"
键作为根键。
因此,如果我们将其保存到template.json
:
{
"AWS::CloudFormation::Init": {
"config": {
"files": {
"C:\Users\Administrator\Desktop\test-file": {
"source": "https://s3.us-east-2.amazonaws.com/example-bucket/example-file"
}
}
}
},
"AWS::CloudFormation::Authentication": {
"S3AccessCreds": {
"type": "S3",
"buckets": ["example-bucket"],
"roleName": "s3access"
}
}
}
然后我们可以执行cfn-init -v --region us-east-2 template.json
.
注意:不要包含堆栈或资源,如果您使用cfn-init -v -s my_stack -r my_instance --region us-east-2 template.json
您将获得:
错误:不能为元数据指定多个输入源
如果您将整个模板文件而不仅仅是"元数据"作为根目录,您将获得:
在 template.json 中找不到"AWS::CloudFormation::Init"键