2017-09-08 36 views
0

在CloudFormation JSON中,我们有一个base64编码的UserData字段,它包含一个看起来像批处理脚本的东西(至少在Windows上)。但它被一个<script></script>包围。为什么AWS CloudFormation的UserData字段中有<script>标签?

这很奇怪,因为格式是JSON,甚至不是XML,所以在那里做什么XML标签?这是遗留问题还是模仿网页浏览器中的<script>标签?

实施例:

"UserData": { 
    "Fn::Base64": { 
     "Fn::Join": [ 
      "", 
      [ 
       "<script>\n", 
       "cfn-init.exe -v -s MyStack -r MyResource --region us-west-1b\n", 
       "</script>\n" 
      ] 
     ] 
    } 
} 

回答

2

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

然而,安装在标准的Windows AMI软件还找:

  • <script>...</script> - 这些标签内的所有内容将在命令行中首次执行的实例启动
  • <powershell>...</powershell> - 任何内这些标签将在PowerShell中的第一次执行的实例启动

参见:Running Commands on Your Windows Instance at Launch

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

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

相关问题