Route 53 のレコードを S3 に定期バックアップする
Route 53 の設定を定期的に S3 バックアップする仕組みが構築できたため、使用したツールやスクリプトを紹介します。
AWS Lambda への実装も考えられますが、今回はサーバ上での定期実行としています。
S3 バケット作成
まずはバックアップ格納先の S3 バケットを用意します。
バケット内に Route 53 専用のディレクトリを作成しました。
S3 書き込みポリシー作成
必要なディレクトリにのみ書き込める権限を用意します。
以下のような IAM ポリシーを s3-backup_route53
として作成しました。
IAM ユーザ作成
スクリプトが利用するためのユーザを作成します。route53-backup
というユーザ名で、以下2つの権限を付与しました。
AmazonRoute53ReadOnlyAccess
※Route 53 の読み取り用s3-backup_route53
※S3 の書き込み用
AWS プロファイル登録
作成した IAM ユーザのアクセスキーを任意のサーバに登録します。
今回は明示的に route53-backup
という名称でプロファイル保存しています。
cli53 準備
Route 53 をコマンドから操作するツール「cli53」を活用します。
Releases ページ から環境に適合したファイルを選んでダウンロードしてきます。
先ほど登録した AWS プロファイルが利用できるかテストします。Route 53 で管理しているゾーンが取得できれば OK です。
バックアップスクリプト作成
全レコードをバックアップするためにスクリプトを作成します。
#!/bin/sh | |
# バックアップ先 | |
BACKUP_DIR="/var/backup_dns" | |
mkdir -p ${BACKUP_DIR} | |
# ゾーン一覧取得 | |
ZONE_LIST="${BACKUP_DIR}/_zone-list.txt" | |
cli53 list --profile route53-backup | awk '{print $2}' | sed -e '1d' > ${ZONE_LIST} | |
# ゾーンごとの全レコード取得 | |
while read zone ; do | |
cli53 export --profile route53-backup ${zone} > ${BACKUP_DIR}/${zone} | |
done < ${ZONE_LIST} | |
# S3転送 | |
S3_DIR="s3://hoge-backup/route53" | |
aws s3 cp ${BACKUP_DIR} ${S3_DIR} --recursive --profile route53-backup |
初めにゾーン一覧を取得した後、レコード内容をテキストファイルに書き出す仕様としました。
これらを S3 に転送するまでがスクリプトの処理です。
S3 転送結果確認
スクリプト実行後、S3 に格納されたことを確認します。
問題がなければ cron 等で定期実行の設定をして完了となります。
参考リンク
まとめ
- Route 53 のバックアップを自動化しました
- Route 53 をコマンド操作するツール「cli53」を活用しました
- 取得したファイルは S3 に格納しています
冒頭に書きましたが Lambda 上で定期実行させたり、そもそも Route 53 の設定自体を Git 等でバージョン管理すると、よりスマートかもしれません。
ディスカッション
コメント一覧
まだ、コメントがありません