什么原因阻止亚马逊的 Route 53 获取我的 EC2 实例标签?

什么原因阻止亚马逊的 Route 53 获取我的 EC2 实例标签?

我有许多 Amazon EC2 实例,全部运行 Ubuntu,我想将其配置为使用 Amazon 的 Route 53。

我按照 Shlomo Swidler 的文章,但遇到了与脚本相关的问题,这些问题已得到解答这里。现在,我已让脚本运行,但脚本添加到 Route 53 的唯一 CNAMES 是 Amazon 实例 ID(i-abcd1234.mydomain.com)。

根据 Swidler 的文章,该脚本允许 Route 53 拾取“ShortName”标签,为每个实例提供“友好”的 CNAME。我已将 ShortName 标签添加到所有实例,但 Route 53 尚未拾取它们。

这是我的脚本:

#!/bin/tcsh -f

set root=`dirname $0`
setenv EC2_HOME /usr/lib/ec2-api-tools
setenv EC2_CERT /etc/cron.route53/ec2_x509_cert.pem
setenv EC2_PRIVATE_KEY /etc/cron.route53/ec2_x509_private.pem
setenv AWS_ACCESS_KEY_ID myaccesskeyid
setenv AWS_SECRET_ACCESS_KEY myaccesskey

/usr/bin/ec2-describe-instances | \
perl -ne '/^INSTANCE\s+(i-\S+).*?(\S+\.amazonaws\.com)/ \
and do { $dns = $2; print "$1 $dns\n" }; /^TAG.+\sShortName\s+(\S+)/ \
and print "$1 $dns\n"' | \
perl -ane 'print "$F[0] CNAME $F[1] --replace\n"' | \
xargs -n 4 /etc/cron.route53/cli53/cli53.py \
rrcreate -x 60 mydomain.com

还有人尝试过吗?什么原因导致 Route 53 无法获取“ShortName”标签?

答案1

该脚本似乎在我的环境中有效。很可能是 ec2-describe-instances 的输出与您发布的脚本中的 perl 代码不匹配。

最简单的可能性是,标签名称的大小写与脚本指定的不匹配。您发布的脚本要求“ShortName”的 S 和 N 大写。“Shortname”和“shortname”不匹配。

另一种可能性是,您的 ec2-api-tools 的版本早于 2010-08-31(当时添加了标签感知)。在这种情况下,以“TAG”开头的行不会显示,因此此脚本将看不到它们。如果您使用的不是 Ubuntu 10.10,则默认的 ec2-api-tools 包将不包含此最新代码。在这种情况下,最好的办法是从下载最新版本官方 EC2 API 工具下载页面

如果这些都不是问题,您能否为我们提供一些/usr/bin/ec2-describe-instances <instance-id>您遇到问题的示例输出?

相关内容