「EFSを別アカウントと共有したい」——一見シンプルですが、ここには落とし穴が潜んでいます。EFSはリージョンサービスに見えて、実体へのアクセスはAZごとのマウントターゲット(それぞれ固有のIP)を通ります。Multi-AZならIPが2つ。そしてアカウントを跨いだ瞬間、この「2つのIP」が厄介の源になります。順に解きほぐします。
01EFSの構造 — リージョンサービスだが、入口はAZごと
まず前提です。EFSファイルシステム自体はリージョンのサービスですが、そこへ接続する入口はマウントターゲットで、これはAZ(サブネット)ごとに1つ作ります。各マウントターゲットはそのサブネット内のENIとして、固有のIPアドレスを持ちます。
つまり、2つのAZから使うEFSには、マウントターゲットが2つ、IPアドレスが2つ存在します。これが「IPが2つある」の正体です。
02DNSがAZアフィニティを吸収してくれる — 同一アカウント内なら
同一アカウント(同一VPC)内では、この2つのIPは意識せずに済みます。EFSのDNS名(fs-xxxx.efs.リージョン.amazonaws.com)でマウントすると、接続元インスタンスと同じAZのマウントターゲットのIPが自動的に返る——AZアフィニティが効くからです。
これは重要な仕組みです。同一AZのマウントターゲットに繋がることで、クロスAZの遅延とデータ転送課金を避けられる。DNSが「2つのIPのうち正しい方」を勝手に選んでくれているわけです。問題は、この便利なDNSがアカウントを跨ぐと効かなくなることです。
03アカウントを跨ぐと、DNSが効かない
別アカウントのVPCからEFSを使いたい場合、ネットワークはVPCピアリングやTransit Gatewayでつなぎます(接続設計の考え方)。ところが、EFSのDNS名は所有アカウントのVPC内でしか正しく解決しません。ピアリング先の別アカウントからそのDNS名を引いても、期待どおりには解決しない。
結果、多くの現場がマウントターゲットのIPを直接指定してマウントする形に行き着きます。そしてIPを直打ちした瞬間、DNSが吸収してくれていたAZアフィニティが消え、「2つのIPのどちらを掴むか」を人間が設計しなければならなくなります。ここからが本題です。
04難しさ① どちらのIPを掴むか — クロスAZ課金とAZ名のランダム性
IP直マウントで最初に問われるのが、クライアントと同じAZのマウントターゲットIPを選べているかです。AZ-aのEC2がAZ-cのマウントターゲット(IP2)を掴むと、通信は毎回AZをまたぎ、遅延が乗り、クロスAZのデータ転送課金が発生し続けます。EFSは頻繁にI/Oするので、この積み重ねは無視できません。
05難しさ② 冗長性の喪失 — 片方のAZが落ちたら?
もう1つの罠が可用性です。DNSでマウントしていれば、各インスタンスが自AZのマウントターゲットに繋がることで、全体としてMulti-AZの回復力が保たれます。ところが1つのマウントターゲットIPを全クライアントに直打ちすると、そのAZが単一障害点になります。そのAZのマウントターゲットに障害が起きれば、全クライアントがEFSを見失う。
「IP直打ちで動いた」で満足すると、Multi-AZのはずが実質シングルAZ依存になっている——これが最も見落とされる劣化です。せっかく2つあるIPを、1つしか活かせていない状態です。
06現実的な設計 — どう2つのIPと付き合うか
- クライアントのAZに応じて正しいIPを選ぶ — インスタンスメタデータから自AZ(AZ ID)を取得し、同AZのマウントターゲットIPをマウントするよう自動化する。手打ちで固定しない
- Route 53のプライベートホストゾーンを共有 — マウントターゲットIPを指すレコードを作り、RAMやVPC関連付けで利用アカウントのVPCに配布し、DNS解決(AZアフィニティ)を再構築する
- AZ IDで物理AZを揃える — 所有・利用の両アカウントで、同じ物理AZ(AZ ID)のサブネット同士を対応づける
- EFSアクセスポイントとファイルシステムポリシー — クロスアカウントのアクセス権はIAM+リソースポリシーで絞る
- そもそもEFSをまたぐべきか — 要件によっては、共有ではなくデータ複製や、EFSを1アカウントに寄せる設計の方が、運用も課金も素直なことがあります
—まとめ
EFSは「リージョンサービス」の顔をしていますが、アクセスの実体はAZごとのマウントターゲット=2つのIPです。同一アカウントならDNSがAZアフィニティを吸収してくれますが、アカウントを跨ぐとDNSが効かず、IP直マウントになり、「どちらのIPを掴むか」でクロスAZ課金・AZ名のランダム性・冗長性の喪失という三つの罠が一気に表面化します。2つあるIPを、正しいAZに・冗長性を保って使う——ここを設計で押さえないと、クロスアカウントEFSは「動いてはいるが遅くて高くて脆い」状態に静かに陥ります。
クロスアカウントのEFS共有(マウントターゲットとIPの扱い、AZ ID整合、DNS再構築、可用性設計)は、EMWのマルチアカウント設計の知見が活きる領域です。「IP直打ちで動いているが不安」な構成の是正からご相談ください。
相談する