我有多个 AWS EC2 实例正在运行,并且我将 Route 53 用于公共(public) DNS。
我知道我可以将 Route 53 DNS 记录指向实例的公共(public) IP 地址或公共(public) DNS 名称。然而,这两个值会随着实例的启动或停止而变化,因此每次实例停止时,我都需要重新配置 Route 53。
有没有办法通过实例名称、私有(private) IP 地址、私有(private) DNS 名称或其他标识符将 AWS Route 53 记录静态链接到 EC2 实例?
显然,要使 DNS 记录对公众有效,Route 53 必须将新的 DNS 记录解析为公共(public) IP 地址或公共(public) DNS 名称。我只是希望 Route 53 将 EC2 实例的当前公共(public) IP 地址替换为它可能用于将 DNS 记录静态链接到 EC2 实例的任何静态标识符。
最佳答案
您可以在启动时运行脚本....这是 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...您可能必须先删除然后再创建,似乎没有更新(我没有尝试过那种特殊的方法,所以不能肯定地说)。
关于amazon-web-services - 将 AWS Route 53 DNS 记录静态链接到 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26597706/