AWS CloudFormation - Ubuntu Nginx元数据

时间:2017-10-01 20:17:24

标签: amazon-web-services nginx yaml metadata amazon-cloudformation

所以我是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,但由于我在堆栈中编码而不使用控制台,因此我不知道语法。任何人有任何指针?

1 个答案:

答案 0 :(得分:0)

抱歉,我的代码太长,所以我无法发表评论。 我没有使用yaml,但我可以在json中执行您想要的代码,如下所示。我使用Fn::Base64Fn::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"
      ]
    ]
  }
}