💬

Route53のレコードをRoadworkerでバックアップする

2024/06/27に公開

概要

弊社はRoute53のレコードをRoadworkerで管理しています。
ただ反映まではRoadworkerで管理していません。
なぜなら他の要件IaC等のツールの仕様で自動的に作成されるものもあるため、
反映まで寄せてしまうと支障がでると思ったためです。

そのため今回の記事ではバックアップまで行う記事の内容となっていますが、
応用次第では反映までを寄せることも可能であると思います。

RoadworkerのDockerfile準備

# 基本となるイメージを指定
FROM ruby:3.1-slim

# 必要なライブラリのインストール
RUN apt-get update && apt-get install -y \
 build-essential \
 libxml2-dev \
 libxslt1-dev \
 && rm -rf /var/lib/apt/lists/*

# roadworker をインストール
RUN gem install roadworker

# コマンドを実行するためのエントリーポイントを指定
ENTRYPOINT ["roadwork"]
  • compose.yml
services:
  roadworker:
    image: roadworker:latest
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ~/.aws:/root/.aws
      - ./route53-config:/app
    working_dir: /app
    command: roadwork --profile aws-roadworker -e --split

aws-roadworkerは~/.aws/credentialsに設定しているプロファイル名です。

IAM User発行してポリシーは読み取りだけできればいいので
arn:aws:iam::aws:policy/AmazonRoute53ReadOnlyAccessのポリシーをアタッチしています。

  • 設定ファイル例
[profile aws-roadworker]
aws_access_key_id = XXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXX

バックアップ取得

  • ディレクトリ作成
mkdir route53-config
  • Build
docker compose build
  • Export
docker compose run roadworker

→ route53-config/Routefileが更新されます。

まとめ

Route53の変更したときの影響はかなり大きく対象によっては
一発でサービスがダウンしてしまうこともあります。

そのため管理方式が重要になるのですが、
いかんせん誤って削除や変更してしまったときのことを考慮して
定期的にバックアップを取得しておくことが推奨されます。

レコード単位でアクセス制限をかけれることは知っているのですが
いかんせんまだ運用追いついておらず。。

今後の管理の方式としては
Route53の変更をトリガーとしてGitHubリポジトリにバックアップする仕組みを
取り入れていきたいと考えています。

Goals Tech Blog

Discussion