AWS::CloudFormation::Init文档允许在 ec2 实例上创建用户规范,因此:
"users" : {
"myUser" : {
"groups" : ["groupOne", "groupTwo"],
"uid" : "50",
"homeDir" : "/tmp"
}
}
我正在尝试以编程方式替换“myUser”。使用 Ref: 不起作用:
"users": {
"{ "Ref": "UserName" }": {
"groups": [ "groupOne", "groupTwo" ]
}
}
在 Ref 行上显示“模板格式错误:JSON 格式不正确”。我尝试了大约 800 种不同的方法来输入该代码,带引号和不带引号,使用不同的函数代替 Ref,但都无济于事。不幸的是,我不知道如何诊断这是否真的只是“你漏了一个逗号”之类的问题,或者尝试以编程方式替换“myUser”是否存在更大的问题。如果是后者,解决方案是什么。
有任何想法吗?
谢谢!
答案1
这无法CloudFormation
直接通过服务实现。内部函数Ref
返回指定参数或资源的值。然后可以将该值与 JSON/YAML 键关联。但它不能直接作为键,因为 JSON/YAML 对象是以键/值对的形式编写的。
我有两个想法可以解决此问题:
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"useradd ",
{ "Ref": "UserName" },
"\n",
]]}}