テクノロジー

EFSを別AWSアカウントのEC2からマウントする方法

はじめに

概要

本記事が掲載されるWAQTechでは同一のAWSアカウント上に複数台のEC2が稼働しており、
EFSのコンテンツデータを共通ストレージとして各EC2から参照するアーキテクチャを採用しています。
今回は同一のAWSアカウントではなく、別のアカウントに存在するEFSに対してEC2からマウントし共通ストレージとして参照する方法をご紹介します。

対象

本記事は下記のような方を対象としています。

  • EC2があるAWSとは別のAWSアカウントにあるEFSを用いたアーキテクチャを実現したい方

前提知識など

  • EFS、VPCピアリングの概念を知っている方

概要図

EC2がある[AWSアカウントA]とEFSがある[AWSアカウントB]をVPCピアリングで通信ができる状態にした上で、
EC2からEFSをマウントし、ファイルシステムへ接続ができることを確認します。

検証のための下準備をする

VPCピアリングを設定する

アカウント間同士の通信をするためにVPCピアリングを設定します。
概要図にも記載の通り、設定は以下のとおりです。
[AWSアカウントA(EC2)]:10.202.0.0/16
[AWSアカウントB(EFS)]:10.201.0.0/16

忘れずにルーティング設定も相互にしておきましょう。

[AWSアカウントA] EC2を立ち上げる

[AWSアカウントA]側にEC2を立ち上げます

インスタンスサイズは必ずM5かC5で立ち上げてください
それ以外でのインスタンスサイズではVPCピアリングを用いてのEFS接続がサポートされていません。
https://docs.aws.amazon.com/ja_jp/efs/latest/ug/limits.html

セキュリティグループは、サーバーにSSHするための22番のみを許可しています。

[AWSアカウントB] EFSを立ち上げる

続けて[AWSアカウントB]側にEFSを立ち上げます

気をつけるのはセキュリティグループでAWSアカウントA(10.202.0.0/16)からのNFSポート通信を許可しておかなくてはならない点です。
これをしないとEC2側からマウントできないので注意しましょう。

これで準備がすべて整いました。
早速EC2からEFSをマウントしましょう

EC2からEFSへマウントする

SSHでEC2へ接続する

NFSクライアントをインストールする

EFSをマウントするにはNFSクライアントをEC2にインストールする必要があります。
■Red Hat Enterprise Linux または SUSE Linux サーバーの場合

■Ubuntu サーバーの場合

EFSをマウントする

EFSをマウントするにはmountコマンドを使用して以下のように行います。

MOUNT_TARGET_IPはEFS内の各アベイラビリティゾーンに割り当てられたIPを指定します。
EC2のアベイラビリティゾーンと合わせるのが良いと思います。

では実際にEFSディレクトリを作成しマウントしてみます。

無事にマウントできました。
続いてファイルを作成して置いてみます。

パーミッションも問題なさそうです。

まとめ

いかがでしたでしょうか。
同一のアカウントで利用する場合ではなく別アカウントにあるEFSをVPCピアリングを用いてマウントすることで、
プロジェクトやシステムを横断してのファイルの授受を実現することができます。
異なるAWSアカウント間でのストレージ共有を行う場合、これまではS3を利用しての実現は可能だったものの、パフォーマンス(特にスループット)の問題で運用が難しい場合がありました。
EFSを使えばスループットにも悩まされずに、共有ストレージとして運用することができますので、ぜひ利用してみください。


関連タグ