似乎公共DNS,例如ec2-xxxx.compute-1.amazonaws.com将在您停止或终止实例时更改。
所以这意味着它们和ec2的公有IP地址有相同的生命周期 ,那么我为什么要使用这个公有的DNS呢? 他们不容易记住,而且毫无意义。
公有DNS名称(是否为弹性IP地址)与使用公有IP地址(弹性IP与否)完全一样,具有以下重要区别:
如果您从EC2外部查询公共DNS名称,则会parsing为公用IP地址。 如果您从EC2内部查询公共DNS名称,则会parsing为私有IP地址。
您可以使用或不使用弹性IP地址的这个技巧。 我build议使用弹性IP地址,因为即使在停止/启动或将您的服务移动到另一个EC2实例之后,它仍然保持公共DNS名称相同。 因此,您可以始终使用弹性IP地址的公有DNS名称,并将其parsing为与弹性IP关联的当前实例的内部IP地址。
您可以通过使用CNAME DNS条目将您的首选主机名映射到Elastic IP的外部DNS名称来扩展此项。
以下是我写的一篇关于使用此function的文章,通过内部EC2通信节省资金并加速networking性能,而无需跟踪所有其他实例上每个实例的当前内部IP地址: http : //alestic.com/2009 / 06 / EC2弹性-IP-内部
除了这一点之外,我同意你可以使用公共IP地址而不是公有DNS名称,因为:
您通过不做DNS查找节省时间
您可以避免偶尔在DNS协议中出现的安全风险。
所以我想现实中还有两点不同
您可以使用EC2公共地址来执行诸如SSH到服务器,或互连EC2实例或任何其他事情。
如果你需要一个一致的地址(比如指向用户),你可以在你的实例之前configuration一个Elastic Load Balancer或者一个Elastic IP。
另外,在EC2内部,公共DNSparsing为实例的内部IP,但在EC2之外parsing为外部IP。 这有时候会很有用,因为使用私有IP的EC2节点之间的通信为您节省了资金。
那么他们只有当你停止实例时才会改变。 如果您的实例将长期居住,您可以指向一个CNAME,它将工作。 它们并不完全无用,它们只是短暂的。