似乎当您停止或终止实例时,公共 DNS(例如 ec2-xxxx.compute-1.amazonaws.com)将会改变。
所以这意味着他们有与 ec2 公共 IP 地址相同的寿命那么我为什么要使用这个公共DNS?它们不容易记住,而且毫无意义。
答案1
公共 DNS 名称(无论是否为弹性 IP 地址)与使用公共 IP 地址(无论是否为弹性 IP)完全相同,但存在以下一个重要区别:
如果您从 EC2 外部查询公有 DNS 名称,它将解析为公有 IP 地址。如果您从 EC2 内部查询公有 DNS 名称,它将解析为私有 IP 地址。
您可以在有或没有弹性 IP 地址的情况下使用此技巧。我建议使用弹性 IP 地址,因为即使在停止/启动或将服务移动到另一个 EC2 实例后,它也能保持公共 DNS 名称不变。因此,您可以始终使用弹性 IP 地址的公共 DNS 名称,它将解析为与弹性 IP 关联的当前实例的内部 IP 地址。
您可以使用 CNAME DNS 条目来扩展此功能,将您的首选主机名映射到弹性 IP 的外部 DNS 名称。
这是我写的一篇文章,介绍如何使用此功能来节省资金并通过内部 EC2 通信加快网络性能,而无需跟踪所有其他实例上每个实例的当前内部 IP 地址:http://alestic.com/2009/06/ec2-elastic-ip-internal
除了这一区别之外,我同意您不妨使用公共 IP 地址而不是公共 DNS 名称,因为:
无需进行 DNS 查找,从而节省时间
您可以避免 DNS 协议中偶尔出现的任何安全风险。
所以我想,实际上,还有两个不同之处......
答案2
您可以使用 EC2 公共地址来执行诸如通过 SSH 进入该服务器、或互连 EC2 实例或执行任何其他操作之类的操作。
如果您需要一个一致的地址(比如指向用户),您可以配置一个弹性负载均衡器或弹性 IP 位于您的实例前面。
此外,在 EC2 中,公共 DNS 解析为实例的内部 IP,但在 EC2 之外,它解析为外部 IP。这有时很有用,因为使用私有 IP 在 EC2 节点之间进行通信可以节省您的费用。
答案3
嗯,它们只有在您停止实例时才会改变。如果您的实例将长期存在,您只需将 CNAME 指向它,它就会起作用。它们不是完全无用的,它们只是暂时的。