コマンドラインで Route53

EC2 のサーバで Web サイトを運用する場合、DNS には Route53 を利用される方もいらっしゃるかと思います。

Route53 は「可用性が高くスケーラブルなクラウドドメインネームシステム (DNS) ウェブサービス」(本家サイトより) です。


いくつかのドメインの Web サイトを EC2 インスタンスで運用していたのですが、そのインスタンスには Elastic IP アドレスを設定していませんでした。
つまり、停止 → 起動 を行うと、IP アドレスが変わってしまう状態でした。

あるとき、このインスタンスの能力を増強するためにインスタンスタイプの変更を行うことになったのですが、インスタンスタイプの変更を行うためには一度インスタンスを停止する必要があります。

インスタンスタイプの変更自体は問題なく行えたのですが、IP アドレスが変わってしまいました。

そのインスタンスにひもづいているドメインDNS レコードは Route53 で管理しており、インスタンスの IP アドレスが変わったので、各ドメインの A レコードを Route53 で変更しなければなりません。

1つ1つ修正する方法もありますが、数が多かったため、コマンドで変更することにしました。以下がそのコマンドです。(1ドメイン分)


aws route53 change-resource-record-sets --hosted-zone-id <ゾーンID> --change-batch '{"Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"<ドメイン名>","Type":"A","TTL": 300,"ResourceRecords":[{"Value":"<IPアドレス>"}]}}]}'


便利ですね。普通のドメイン管理サービスではなかなかこうはいきません。

ドメインのゾーンIDもコマンドで取得することができます。

aws route53 list-hosted-zones | jq -r '.HostedZones[]|[.Name,.Id]|@csv'



aws コマンドを使用するためにはそれなりに(もしかしたら面倒な)準備が必要ですが、それを補ってあまりある便利さです。