为什么 AWS CloudFormation 的 UserData 字段中有一个 <script> 标签?
Why is there a <script> tag in the UserData field in AWS CloudFormation?
在 CloudFormation JSON 中,我们有一个 base64 编码的 UserData 字段,其中包含一个对我来说看起来像批处理脚本的内容(至少在 Windows 上)。但是它被<script></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"
]
]
}
}
用户数据 字段将信息传递给 Amazon EC2 实例。它可以是数据库的密码、后端服务器的 IP 地址或您选择的任何内容。
但是,安装在标准 Windows AMI 上的软件也会查找:
<script>...</script>
-- 这些标签中的任何内容都将在实例首次启动时在命令行上执行
<powershell>...</powershell>
-- 这些标签中的任何内容都将在实例首次启动时在 PowerShell 中执行
参见:Running Commands on Your Windows Instance at Launch
对于亚马逊 Linux 实例,以 #!
开头的用户数据将在 shell.
中执行
所以... 为什么 XML 在字符串中? 这是因为字符串只是通过用户数据传递到实例上的实用程序软件,并且软件正在寻找这些标签。没有它们,脚本将不会被执行。
在 CloudFormation JSON 中,我们有一个 base64 编码的 UserData 字段,其中包含一个对我来说看起来像批处理脚本的内容(至少在 Windows 上)。但是它被<script></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"
]
]
}
}
用户数据 字段将信息传递给 Amazon EC2 实例。它可以是数据库的密码、后端服务器的 IP 地址或您选择的任何内容。
但是,安装在标准 Windows AMI 上的软件也会查找:
<script>...</script>
-- 这些标签中的任何内容都将在实例首次启动时在命令行上执行<powershell>...</powershell>
-- 这些标签中的任何内容都将在实例首次启动时在 PowerShell 中执行
参见:Running Commands on Your Windows Instance at Launch
对于亚马逊 Linux 实例,以 #!
开头的用户数据将在 shell.
所以... 为什么 XML 在字符串中? 这是因为字符串只是通过用户数据传递到实例上的实用程序软件,并且软件正在寻找这些标签。没有它们,脚本将不会被执行。