amazon-web-services - 将 AWS Route 53 DNS 记录静态链接到 EC2 实例

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

我有多个 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/

相关文章:

amazon-web-services - AWS 错误 - sudo : unable to resolve host ip-10-0-xx-xx

java - 较小规模的 Java 分布式编程

amazon-ec2 - 替换AWS Elastic BeanStalk上的特定实例?

java - 设置 Java DNS 缓存 TTL

c# - 是否可以在 C# 的 HttpClient 中设置自定义 DNS 解析器

ruby-on-rails - 尝试生成预先签名的 url 链接,以便用户可以下载 Amazon S3 对象,但收到无效请求

amazon-web-services - 是否可以在AWS Cloudformation中指定数据格式转换?

networking - 如何将特定客户端(浏览器)动态分配给众多服务器之一?

python - 如何将图像数据从 s3 存储桶加载到 sagemaker 笔记本?

amazon-web-services - AWS 创建 vpc 并启动实例