在CloudFormation JSON中,我们有一个base64编码的UserData字段,其中包含一个看起来像我的批处理脚本(至少在Windows上)。但它被< script>< / script>
包围。
这很奇怪,因为格式是JSON,甚至不是XML,那么什么是XML标签呢?它是遗留的东西,还是模仿Web浏览器中的< script>
标记?
示例:
&# xA;
 “UserData”:{
 “Fn :: Base64”:{
 “Fn ::加入”:[
 “”,
 [
 “<脚本> \ n”,
 “cfn-init.exe -v -s MyStack -r MyResource --region us-west-1b \ n”,
 “< /脚本> \ n” 个
 ]
 ]
 }
}
 代码>


答案 0 :(得分:3)
用户数据字段将信息传递到Amazon EC2实例。它可以是数据库的密码,后端服务器的IP地址或您选择的任何内容。
但是,安装在标准Windows AMI上的软件也会寻找:
<script>...</script>
- 第一次启动实例时,将在命令行上执行这些标记中的任何内容<powershell>...</powershell>
- 第一次启动实例时,这些标记中的任何内容都将在PowerShell中执行请参阅:Running Commands on Your Windows Instance at Launch
对于Amazon Linux实例,以#!
开头的用户数据将在shell中执行。
所以... 为什么XML在字符串中?这是因为字符串只是通过用户数据传递给实例上的实用程序软件,而软件正在寻找那些标签。没有它们,脚本将不会被执行。