将AWS Route 53 DNS记录静态链接到EC2实例

时间:2014-10-27 22:10:05

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

我有多个AWS EC2实例在运行,我使用Route 53进行公共DNS。

我知道我可以将Route 53 DNS记录指向公共IP地址或实例的公有DNS名称。但是,无论何时启动或停止实例,这两个值都会更改,因此每次实例停止时,我都需要重新配置Route 53。

有没有办法通过实例名称,私有IP地址,私有DNS名称或其他标识符将AWS Route 53记录静态链接到EC2实例?

显然,要使DNS记录对公众有效,Route 53必须将新的DNS记录解析为公共IP地址或公共DNS名称。我只是希望Route 53将当前的公共IP地址替换为EC2实例,用于静态标识符,以便将DNS记录静态链接到EC2实例。

2 个答案:

答案 0 :(得分:6)

您可以在启动时运行脚本....这是Python中的一个脚本:

import boto.route53
import requests

myMachine = "youralias"
myZone = "yourdomain.com."

myARecord = myMachine + "." + myZone

myPublicIP = requests.get("http://169.254.169.254/latest/meta-data/public-ipv4")
myCurrIP = myPublicIP.text

conn53 = boto.route53.connect_to_region("universal")

upd53 = conn53.get_zone(myZone)

exists = upd53.get_a(myARecord)
if exists:
  upd53.update_a(myARecord, myCurrIP)
  print "DNSLOG: " + myARecord + " updated to " + myCurrIP
else:
  upd53.add_a(myARecord, myCurrIP)
  print "DNSLOG: " + myARecord + " created: " + myCurrIP

请注意,您需要为有权更新Route53记录的实例使用EC2角色,或者您必须将AWS凭据添加到系统或脚本中。 (请参阅http://boto.readthedocs.org/en/latest/boto_config_tut.html获取相关帮助)。

AWS CLI中还有一个命令行我认为会这样做...运行:

aws route53 change-resource-record-sets help 

查看格式。它需要一个JSON blob ...你可能必须删除然后创建,它似乎不是一个更新(我没有尝试过这种特殊的方法,所以不能肯定地说)。 / p>

答案 1 :(得分:1)

使用弹性IP地址并将其分配给您的EC2实例。配置Route 53以将DNS条目解析为这些IP地址。