如何在Amazon EC2实例内部找到“公共DNS名称”?

4
我在Amazon EC2上有一个Windows 2008r2实例。我想从实例内部访问其“公共 DNS名称”。在我的AWS EC2控制台上也可以找到公共DNS名称。
有办法做到这一点吗?

反向 DNS 查找能解决这个问题吗?除非你在控制台中更改了它,否则它会返回类似于 ec2-50-16-114-10.compute-1.amazonaws.com 的内容。 - Steven V
2个回答

6
Unknown的回答在技术上是正确的(+1),但为了提供背景和更多细节,我想提一下相关的Amazon EC2 实例元数据和用户数据

实例元数据是有关您的EC2实例的数据,您可以使用它来配置或管理正在运行的实例。实例元数据分为多个类别。有关更多信息,请参见实例元数据类别

众多可用的元数据类别之一是public-hostname

实例的公共DNS。如果实例在VPC中,则仅在将enableDnsHostnames属性设置为true时才返回此类别。有关更多信息,请参见在VPC中使用DNS

您可以使用任何支持HTTP的工具,例如广泛使用的cURL、极力推荐的HTTPie(一种类似于cURL的CLI工具,适合人类使用),当然也包括 PowerShell(特别是版本3.0+)从正在运行的EC2实例中通过专用URI http://169.254.169.254/latest/meta-data/检索实例元数据,例如:

PS> $publicHostname = Invoke-WebRequest `
      -Uri http://169.254.169.254/latest/meta-data/public-hostname

谢谢。运行得很好。当然,由于我是Ruby程序员,我使用了:RestClient.get "http://169.254.169.254/latest/meta-data/public-hostname"。 - Jay Godse

3
请看这里,但是要使用public-hostname而不是instance-id

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接