如何在 CloudFormation 中连接实例

Dim*_*ris 4 amazon-ec2 template amazon-web-services amazon-cloudformation

我们想为 AWS 中相当标准的堆栈创建一个模板。我们需要三层。

  1. 层:弹性负载均衡器

  2. 层:根据站点需求触发的警报创建/销毁多个Web服务器

  3. 层:数据库服务器

第 2 层上的实例应该知道数据库实例的主机名。理想情况下,我想获取数据库实例的私有 IP 并将其通过用户数据传递到 Web 服务器。

Fn::GetAtt不支持私有ip(只支持public)

我想另一种方法是构建堆栈,然后手动设置数据库私有 ip。虽然它确实使我们的设置不那么干净。理想情况下,我们希望在模板中描述所有内容。(即使这涉及通过user-data运行脚本)

有什么建议?

小智 6

我现在这样做是为了向我的傀儡主人添加新节点。例如,我在新节点的 UserData 部分中获取了 puppet master 实例的私有 IP:

"echo ", { "Fn::GetAtt" : [ "MasterOfPuppets", "PrivateIp" ] }, " ", 
         { "Fn::GetAtt" : [ "MasterOfPuppets", "PrivateDnsName" ] } ," puppet 
    >> /etc/hosts\n","\n",
Run Code Online (Sandbox Code Playgroud)

请参阅CloudFormation 用户指南的第 119 页。

或者,您可以使用实例 MetaData:

curl http://169.254.169.254/latest/meta-data/local-ipv4/
Run Code Online (Sandbox Code Playgroud)