我有许多Amazon EC2实例,都运行Ubuntu,我想要configuration它来使用Amazon的Route 53。
我按照Shlomo Swidler的文章设置了一个脚本,但遇到了与脚本相关的问题,这些问题在这里得到解答。 现在,我的脚本正在工作,但脚本中唯一添加到Route 53的CNAMES是Amazon实例ID(i-abcd1234.mydomain.com)。
根据Swidler的文章,脚本允许Route 53拾取一个“ShortName”标签,给每个实例一个“友好的”CNAME。 我将短名称标签添加到所有我的实例,但它们没有被路由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
有没有人试过这个? 什么可以阻止路线53拿起“ShortName”标签?
该脚本似乎在我的环境中工作。 这很可能是ec2-describe-instances的输出与您发布的脚本中的perl代码之间的不匹配。
最简单的可能是如果标签名称中的大小写与脚本指定的大小写不符。 您发布的脚本需要使用大写字母“S”和大写“N”的“ShortName”。“Shortname”和“shortname”不匹配。
另一种可能性是你的ec2-api工具是在2010-08-31之前添加标签意识的版本。 在这种情况下,以“TAG”开头的行将不会显示出来,所以这个脚本不会看到它们。 如果你不使用Ubuntu 10.10,那么默认的ec2-api-tools软件包将不会有这个最新的代码。 在这种情况下,您最好的select就是从官方的EC2 API工具下载页面下载最新的版本。
如果这两个都不是问题,那么您可以给我们一些/usr/bin/ec2-describe-instances <instance-id>示例输出吗?