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

What is best way to get internal IP address of Amazon EC2 instances?

请检查以下场景:

我想做一个有3个实例的集群,所以这3个实例需要知道彼此的私有IP地址。

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

在 cloudformation 中,您可以使用 GetAtt intrinsic function,它 returns 模板中资源的属性值。

要获取 PrivateIp,它看起来像这样:

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

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

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

这样,实例本身不需要知道 IP 地址,也不需要 'send' 其他实例的 IP 地址,也不需要在每个实例上存储 IP 地址.

参见: