インフラ・DevOps
Route 53 Filesのローンチ
Launching Route 53 Files (daemonology.net)
要約
Amazon Route 53 Filesは、AWSのコンピューティングリソースとAmazonの高可用性データベースをシームレスに接続する新しいファイルシステムです。これにより、DNSレコードをファイルのように直接編集できるようになり、標準的なUNIXツールを使った管理が容易になります。変更は自動的にRoute 53に反映され、他のチャネルからの変更もファイルシステムに表示されるため、DNS管理が簡素化されます。
全文翻訳
Route 53 Filesのローンチ
Route 53 Filesのローンチ
Route 53 Filesを発表できることを嬉しく思います。これは、任意のAWSコンピューティングリソースとAmazonの最高可用性データベースをシームレスに接続する新しいファイルシステムです。
40年前、Berkeley Internet Name Domain Serverがローンチされたとき、DNSレコードは「ゾーンファイル」に保存されていました。これらのファイルをviで編集することはできましたが、変更を有効にするにはBINDにリロードを指示する必要がありました。その後、Daniel Bernsteinのtinydnsのような他のDNSサーバーが登場し、ディスク上のデータベースから直接レコードを提供しましたが、それでも人間が読めるDNSレコードを編集した後、データベースファイルを再コンパイルする必要がありました。
Route 53 Filesを使用すると、追加の手順なしに標準的なUNIXソフトウェアを使用してDNSを編集できるようになります。ホストゾーンがファイルシステムとしてアクセス可能になり、ファイルシステムで行ったレコードの変更はRoute 53に自動的に反映され、AWS Management Console、Route 53 API、AWS CLIなどの他のチャネルを通じてRoute 53で行われた変更はファイルシステムに自動的に表示されます。
Route 53 Filesファイルシステムは複数のコンピューティングリソースにアタッチでき、複製なしでチーム間でゾーンの共有アクセスを可能にします。これまで、Route 53コンソール、Route 53 API、およびそれらを基盤とするツールの中から選択する必要がありました。Route 53 Filesはこのトレードオフを排除します。
ホストゾーンは、組織のすべてのDNSレコードの中心ハブになります。本番アプリケーションの実行、インシデントへの対応、エージェント型AIシステムの構築など、あらゆるAWSコンピューティングインスタンス、コンテナ、または関数から直接アクセスできます。Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Elastic Container Service (Amazon ECS) またはAmazon Elastic Kubernetes Service (Amazon EKS) 上で実行されているコンテナ、またはAWS Lambda関数で、登録済みのパブリックまたはプライベートホストゾーンをネイティブファイルシステムとしてアクセスできます。
ファイルシステムは、各リソースレコードセットをファイルとして、各レコード名をディレクトリとして提示し、作成、読み取り、更新、削除などの標準的なNetwork File System (NFS) v4.1+操作をサポートします。エイリアスレコードはターゲットへのシンボリックリンクとして表示されるため、ls -lは期待どおりにレンダリングし、readlinkは期待どおりに機能します。ゾーン間エイリアスは、ターゲットが同じファイルシステム内にないため、ダングリングシンボリックリンクとして表示されます。
内部的には、Route 53 FilesはS3 Filesを使用しており、ファイル保存からライブDNSへの到達までに約90秒のレイテンシ、他の場所でRoute 53で行われた変更がマウントに表示されるまでに最大6分のレイテンシを提供します。(ライブDNSへの変更到達が、直ちに世界中で可視であることを保証するわけではないことに注意してください。DNS変更のグローバル可視性レイテンシは、レコードTTLとキャッシュ動作に依存します。)
ファイルシステムは、複数のコンピューティングリソースからの同時アクセスをlast-write-wins(後勝ち)の競合解決でサポートしており、AIエージェントがファイルベースのツールを通じて協力したり、オンコールエンジニアがsedを使用して互いの変更を元に戻したりするなど、権威DNSを更新する共有ワークロードに最適です。
始め方を見てみましょう。
最初のRoute 53 Filesファイルシステムを作成し、マウントして、EC2インスタンスからDNSを編集するのは簡単です。この例では、すでにRoute 53ホストゾーンと、それをマウントしたいEC2インスタンスがあります。
まず、Route 53 Filesコンソールに移動し、IAMロールを作成します。これらは、Route 53 FilesがAWSアカウントにリソースを作成し、既存のRoute 53ホストゾーンを読み書きできるようにするために必要です。12桁のAWSアカウントIDと使用予定のRoute 53ホストゾーンIDを入力します。必要であれば、複数のホストゾーンを指定したり、「*」を指定してすべてのRoute 53ホストゾーンを登録することもできます。
「バンドルを作成」をクリックすると、Webブラウザ内でIAMロールポリシーを含むtarballが生成されます。これらのポリシーは、必要な権限のみを付与します。セキュリティに敏感な場合(そうすべきです)、ロール生成コードを監査して、不要な権限を付与していないことを確認できます。
バンドルをダウンロードしたら、解凍して含まれているスクリプトを実行してロールを作成します。tarball内にはREADME.txtファイルもあり、後で追加のホストゾーンを登録できるように調整する必要があるものについても説明しています。
必要なIAMロールを作成したので、Route 53ホストゾーンをRoute 53 Filesに登録できます。AWSアカウントID、Route 53ホストゾーンID、Route 53 Filesファイルシステムを作成したいAWSリージョン(私はカナダ人なのでca-central-1を選択しました)を入力します。外部IDはロールバンドル作成時に自動入力されます。後でこのページに戻った場合、生成したロールバンドルのtarballのREADME.txtファイルから外部IDを取得できます。(外部IDは、あなただけがホストゾーンを登録できることを保証します。Route 53 Filesの使用を停止したい場合にも使用されます。)
ホストゾーンを登録した際に、fs-0123456789abcdef0のようなファイルシステムIDを受け取り、マウントターゲットを作成できます。Route 53 FilesはS3 Filesと互換性があるため、同じコマンドを使用します。
$ aws s3files create-mount-target \
--file-system-id fs-0123456789abcdef0 \
--subnet-id <そのVPC内のサブネット> \
--security-groups <クライアントからのTCP 2049を許可するグループ> \
--region <あなたのリージョン>
Route 53 FilesはNFSを使用するため、TCP/2049ポートへのアクセスを許可するセキュリティグループを使用する必要があることに注意してください。
マウントターゲットが利用可能になったら、EC2インスタンスにマウントできます。すでにamazon-efs-utilsバージョン3.0.0以降とbotocoreがインストールされており、EC2インスタンスにAmazonS3FilesClientFullAccessポリシーを含むIAMロールがアタッチされていることを確認しています。
$ sudo mkdir -p /mnt/r53fs/example.com
$ sudo mount -t s3files -o nodirects3read \
fs-0123456789abcdef0 /mnt/r53fs/example.com
Route 53 FilesでのDNS編集
これで標準的なコマンドラインツールを使用してDNSを編集できます。ファイルシステム内では、foo/TYPEは「foo」という名前のTYPEレコードです。DNSの伝統に従い、特殊な名前「@」はゾーンのルート(apex)を参照します。
例えば:
$ echo 1.2.3.4 | sudo tee /mnt/r53fs/example.com/@/A は、ゾーンルートexample.comのAレコードを値1.2.3.4で作成します。
ラウンドロビンDNSを使用したい場合は、同じレコードセットに別のレコードを作成するだけです。
$ echo 5.6.7.8 | sudo tee -a /mnt/r53fs/example.com/@/A
ファイルに2行あるため、DNS経由で2つのIPアドレスが返されるようになります。
wwwホストがゾーンルートのエイリアスになるようにしたいので、シンボリックリンクを作成します。
$ sudo mkdir /mnt/r53fs/example.com/www
$ sudo ln -s ../@/A /mnt/r53fs/example.com/www/A
移行に先立ってレコードTTLを減らしたい場合は、.TTLの兄弟ファイルを作成するだけです。
$ echo 60 | sudo tee /mnt/r53fs/example.com/@/A.TTL
変更はライブDNSにすぐに反映されます。.TTLの兄弟ファイルがない場合、デフォルト値の300秒が使用されます。
ワイルドカードレコード(例: *.example.com)は、期待どおりに名前が付けられます。ただし、*はほとんどのシェルで展開されるため、コマンドラインから実行する場合はエスケープする必要があることに注意してください。
$ sudo mkdir /mnt/r53fs/example.com/\
$ echo www.example.com | sudo tee /mnt/r53fs/example.com/
もちろん、ファイルシステムはコマンドラインだけでなく、あらゆるツールからアクセスできます。例えば、cronジョブからDNSを更新できます。
$ echo "*/5 * * * * root date > /mnt/r53fs/daemonology.net/vixie/TXT" | sudo tee -a /etc/crontab
$ sleep 600
$ dig +short -t txt vixie.daemonology.net
"Tue Aug 25 00:20:01 UTC 2026"
知っておくべきこと
いくつか重要な技術的な詳細を共有します。
Route 53 Filesは、アクセス制御のためにAWS Identity and Access Management (IAM)と統合されています。すべてのロールはあなたが作成します。サービスはロール作成権限を持たず、IAMロールを削除すると、サービスは直ちに、かつサイレントに動作を停止します。
ファイルシステムとRoute 53で同じレコードが同時に変更された場合、私たちは...