所以我是CloudFormation的新手,我正在尝试使用Nginx创建一个index.html页面,该页面显示一行文本,服务器的公共DNS名称和AWS区域。我在YAML中做我的堆栈代码。这是UserData下的代码的一部分:
sudo apt-get update
sudo apt-get install -y nginx
sudo service nginx start
cd /var/www/html
echo "<title>CloudFormation</title><h1>Name</h1><p>This page created entirely by CloudFormation</p>" > index.html
我不知道如何使用echo命令将元数据传递到index.html。我尝试了!Sub {EC2Instance.PublicDnsName}
但没有成功。显然,方法是使用亚马逊元数据Web服务并使用某些命令获取值,然后将它们传递到index.html,但由于我在堆栈中编码而不使用控制台,因此我不知道语法。任何人有任何指针?
答案 0 :(得分:0)
抱歉,我的代码太长,所以我无法发表评论。
我没有使用yaml,但我可以在json中执行您想要的代码,如下所示。我使用Fn::Base64
和Fn::join
语法。您可以引用它并迁移到yaml。
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash",
"\n",
"sudo apt-get update\n",
"sudo apt-get install -y nginx\n",
"sudo service nginx start\n",
"\n",
"cat > /var/www/html/index.html << \"EOF\"\n",
"<title>CloudFormation</title>\n",
"<h1>Name</h1><p>This page created entirely by CloudFormation. Author: ",
{
"Ref": "Author_name_in_parameter"
},
"</p>\n",
"EOF\n",
"\n"
]
]
}
}