是什麼阻止了 Amazon 的 Route 53 獲取我的 EC2 實例標籤?
我有許多 Amazon EC2 實例,它們都執行 Ubuntu,我想將它們配置為使用 Amazon 的 Route 53。
我按照 Shlomo Swidler 的文章設置了一個腳本,但遇到了與腳本相關的問題,這些問題在這裡得到了解答。現在,我的腳本正在執行,但腳本添加到 Route 53 的唯一 CNAME 是 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”標籤?
該腳本似乎在我的環境中工作。這很可能是 ec2-describe-instances 的輸出與您發布的腳本中的 perl 程式碼不匹配。
最簡單的可能性是標籤名稱中的大小寫與腳本指定的大小寫不匹配。您發布的腳本需要帶有大寫 S 和大寫 N 的“ShortName”。“Shortname”和“shortname”不匹配。
另一種可能性是您的 ec2-api-tools 在添加標籤感知時是 2010-08-31 之前的版本。在這種情況下,以“TAG”開頭的行將不會顯示,因此該腳本不會看到它們。如果您不使用 Ubuntu 10.10,預設的 ec2-api-tools 包將沒有此最新程式碼。在這種情況下,您最好的選擇就是從官方 EC2 API 工具下載頁面下載最新版本。
如果這些都不是問題,您能否為我們提供一些
/usr/bin/ec2-describe-instances <instance-id>
您遇到問題的範例輸出?