如何获取元数据并追加到现有的HTML文件

时间:2019-01-30 16:51:11

标签: amazon-web-services yaml

我正在用YAML编写脚本以在Amazon Web Services上运行Ubuntu Web服务器。我想获取元数据(特别是公共DNS名称和当前的AWS区域),并将该信息附加到已经存在的html文件中。

我不确定如何实现一种方法来获取元数据并将其附加到html文件。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-retrieval显示了我应该用来获取所需元数据的命令和URL,但是我不确定如何将其写入代码中,以便将这些详细信息写入index.html文件中。

UserData:
        'Fn::Base64': |
          #!/bin/bash -x

          # set timezone
          timedatectl set-timezone America/New_York

          # install and setup apache
          apt-get update
          apt-get install -y nginx
          cd /var/www/html
          echo "<title>User #1</title> <h1>You are User #1</h1> <h2></h2>" > index.html
          service nginx start

现在,当显示html文件时,标题中将显示“ User#1”,页面上将显示“ You are User#1”。我想知道如何使公共DNS和AWS区域显示在其下方。

1 个答案:

答案 0 :(得分:1)

您当前正在使用的机制不会产生valid HTML文件。所以你应该纠正它。

将公共DNS主机名和AWS区域注入到静态HTML文件中的最简单解决方案可能是使用带有占位符的模板index.html文件作为DNS主机名和AWS区域,例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Here is a title</title>
</head>
<body>
    <p>AWS region: %AWS_REGION%</p>
    <p>Public hostname: %DNS_HOSTNAME%</p>
</body>
</html>

然后是use sed to replace %AWS_REGION%%DNS_HOSTNAME%以及使用curl检索到的实际运行时值,例如:

请注意,要获取AWS区域,您需要parse it out of the AZ