为什么AWS CloudFormation中的UserData字段中有<script>标记?

时间:2017-09-08 07:27:01

标签: amazon-web-services amazon-cloudformation

在CloudFormation JSON中,我们有一个base64编码的UserData字段,其中包含一个看起来像我的批处理脚本(至少在Windows上)。但它被&lt; script&gt;&lt; / script&gt; 包围。

&#xA;&#xA;

这很奇怪,因为格式是JSON,甚至不是XML,那么什么是XML标签呢?它是遗留的东西,还是模仿Web浏览器中的&lt; script&gt; 标记?

&#xA;&#xA;

示例:

&# xA;&#xA;
 “UserData”:{&#xA; “Fn :: Base64”:{&#xA; “Fn ::加入”:[&#xA; “”,&#XA; [&#XA; “&LT;脚本&GT; \ n”,&#XA; “cfn-init.exe -v -s MyStack -r MyResource --region us-west-1b \ n”,&#xA; “&LT; /脚本&GT; \ n” 个&#XA; ]&#XA; ]&#XA; }&#XA;}&#XA;  
&#XA;

1 个答案:

答案 0 :(得分:3)

用户数据字段将信息传递到Amazon EC2实例。它可以是数据库的密码,后端服务器的IP地址或您选择的任何内容。

但是,安装在标准Windows AMI上的软件也会寻找:

  • <script>...</script> - 第一次启动实例时,将在命令行上执行这些标记中的任何内容
  • <powershell>...</powershell> - 第一次启动实例时,这些标记中的任何内容都将在PowerShell中执行

请参阅:Running Commands on Your Windows Instance at Launch

对于Amazon Linux实例,以#!开头的用户数据将在shell中执行。

所以... 为什么XML在字符串中?这是因为字符串只是通过用户数据传递给实例上的实用程序软件,而软件正在寻找那些标签。没有它们,脚本将不会被执行。