获取Amazon EC2实例的内部IP地址的最佳方法是什么?

时间:2018-05-22 11:52:22

标签: amazon-web-services amazon-ec2 ip-address

请检查以下情况:

  • 我正在使用CloudFormation模板创建3个Amazon EC2实例。
  • 在模板中,我使用Auto Scaling组启动3个实例。
  • 我没有分配公共IP地址 - 只有私有IP地址将分配给实例。

我想创建一个包含3个实例的集群,因此3个实例需要知道彼此的私有IP地址。

在第三个实例中获取其他2个实例的IP地址的最佳方法是什么?我应该在AMI中保留一个小脚本,将IP地址扔到外面吗?

2 个答案:

答案 0 :(得分:2)

一般情况下,最好避免通过IP地址引用其他资源。例如,实例可能会失败,您可能会将其替换为新实例,该实例将接收不同的IP地址。

相反,建议为实例分配DNS名称,并通过该DNS名称引用它。您可以在CloudFormation模板中定义 Amazon Route 53私有托管区域,并创建记录集以为每个3 EC2实例分配名称。

这样,实例本身不需要知道IP地址,也不需要将IP地址“发送”到其他实例,也不需要在每个实例上存储IP地址。

请参阅:

答案 1 :(得分:1)

在cloudformation中,您可以使用https://symfony.com/doc/current/doctrine.html,它会从模板中的资源返回属性的值。

要获取PrivateIp,它将如下所示:

{ "Fn::GetAtt" : [ "Ec2Instance", "PrivateIp" ] }