はじめに
皆さん、こんにちは! プロフェッショナルサービスコンサルタントの神谷です。
皆様はこれまでに Amazon Elastic File System (EFS) を使用した経験はありますか ? 様々なインスタンスやオンプレミスリソースから NFS プロトコルでアクセス可能な、共有ストレージサービスです。
利用シーンは様々ありますが、例えば Amazon EC2 インスタンスにマウントして、インスタンスからの操作で使うケースや、コンテナの永続ストレージとしての利用、オンプレミスの NFS クライアントからの利用等があります。ただ、EFS を使っていて「もっと簡単に EFS 上のファイルのダウンロードやアップロードを行いたい !」、「EC2 インスタンス等のサーバー経由ではなく、直接 EFS ファイルシステムのディレクトリやファイルの操作を行いたい !」と思われた方も多いのではないのでしょうか ?
本記事ではそんな悩みを解決するために、「AWS ソリューションライブラリ」の中から「Simple File Manager for Amazon EFS」というソリューションをご紹介します。このソリューションを用いることで、図のようなシンプルなウェブページから EFS ファイルシステムを簡単に操作することが可能となります !
本ソリューションは AWS CloudFormation のテンプレートを用いることで、迅速かつ簡単にデプロイ可能です。また、本ソリューションの EFS 以外の全ての機能は、サーバーレスの AWS サービスで構成されています。デプロイ後もウェブページからのファイル操作を行わない限りはコストが発生しないため、お気軽にお試しいただけます ! (コストの詳しい部分に関しては、後述します)
それでは、実際の構築方法や使用方法を見ていきましょう!

builders.flash メールメンバー登録
1. Simple File Manager for Amazon EFS とは ?
このソリューションの CloudFormation テンプレート を使用すると、以下のアーキテクチャがデプロイされます。 EFS 自体はデプロイされませんが、既にお客様が利用している EFS が自動的にこのソリューションに接続されます。また、 EFS 自体はいつ作成していただいても、このソリューションから操作できます 。
このソリューションではウェブページからの操作で、 EFS ファイルシステムに対して以下の操作を行うことができます。
- ディレクトリの作成
- ファイルの一覧表示
- ファイルの削除
- ファイルのアップロード
- ファイルのダウンロード
アーキテクチャの全体像
1-2. 使用する AWS サービス
サービスや機能 | このアーキテクチャにおける役割 |
Amazon CloudFront ディストリビューション | 「Simple File Manager for Amazon EFS」ソリューションのウェブ UI を提供します。 |
Amazon Simple Storage Service (Amazon S3) ウェブソースバケット | Amazon CloudFront ディストリビューションをホストします。 |
Amazon Cognito ユーザープール | ユーザーディレクトリを提供します。 |
Amazon Cognito ID プール | ウェブページに対する認証と認可のために AWS Identity and Access Management (IAM) と連携します。 |
Amazon API Gateway ファイルマネージャー REST API | ウェブページから EFS ファイルシステムにオペレーションをプロキシします。操作するための API 用の IAM ロールが作成されます。 |
AWS Lambda の API ハンドラー関数 | ファイルマネージャー API をサポートします。 |
AWS Lambda のファイルマネージャー関数 | EFS ファイルシステムに接続します。ソリューションの中のウェブ UI 画面から作成します。 |
Amazon EFS アクセスポイント | AWS Lambda から EFS ファイルシステムへのアクセスを許可します。ソリューションの中のウェブ UI 画面から作成します。 |
1-3. 制約事項
2023 年 4 月時点のバージョン 1.5.1 の場合、以下の制約事項がありますので、ご注意ください。
- このソリューションを使用したファイルのアップロードとダウンロードは、最大 1 GB のサイズでテストされています。より大きなファイルもサポートしますが、1 GB を超えるものについてのテストはされていません。
- このソリューションでは、マウントターゲット を使用してデプロイされた EFS ファイルシステムがあることを前提としています。管理しようとしているファイルシステムに、セキュリティグループやネットワーク ACL 、IAM ポリシー等、お客様環境に合わせた適切なルールを関連づけてご使用ください。詳細については、こちらの Amazon EFS ファイルシステムのネットワークアクセス制御ページ をご参照ください。
2. デプロイ方法 / 設定方法
本ソリューションのデプロイと設定の流れは、以下の 4 つのステップに分かれています。
ステップ 1: CloudFormation スタックの起動
ステップ 2: ログインとスタック作成時に自動生成されたパスワードのリセット
ステップ 3: AWS Lambda のファイルマネージャー関数の作成
ステップ 4: 認証・認可のための Amazon Cognito ユーザーの作成
では、実際にそれぞれの流れについて詳しく見ていきましょう!
2-1. ステップ 1: CloudFormation スタックの起動
まずは、こちらのソリューション「Simple File Manager for Amazon EFS」のページから「AWS コンソールで起動する」をクリックします。

CloudFormation のスタック作成
すると、CloudFormation のスタック作成の画面に遷移します。こちらのスタック作成のページから、実際にテンプレートを用いてソリューションをデプロイします。なお、このソリューションの実装では、右画面の右上の設定から、リージョンとして東京リージョンや大阪リージョンなどを選択することが可能です。
まず、「テンプレートの準備完了」が選択された状態で、「テンプレートの指定」には、Amazon S3 URL と、テンプレートの URL が自動入力された状態であることを確認し、「次へ」を押します。

スタックの詳細を指定
次に、「スタックの詳細を指定」の画面で、「スタックの名前」に任意の名前を入力します。今回は、「SimpleFileManager」としました。「パラメータ」には、AdminEmail として、管理者のメールアドレスを入力します。
画面の例では架空のメールアドレスが入力されていますが、このアドレスに初期ログイン時のパスワードが送付されます。実際に使用される場合は受信可能なメールアドレスを入力ください。
名前とメールアドレスを入力したら、「次へ」を押してください。

スタックオプションの設定

スタックのレビュー画面

レビュー画面の最下部

デプロイ完了で
SimpleFileManager スタック (最初に名前を付けたスタック) のステータスが、「CREATE_COMPLETE」になれば無事デプロイ完了です !
私の場合ですと、大体 10 分ほどでデプロイ完了しました。

URL を保存
スタックのデプロイ完了後、右のように出力タブを見てみると「EFSFileSimpleWebsiteUrl」というキーに対応した値として、URL が表示されています。こちらの URL にアクセスすることで、ウェブブラウザから EFS ファイルシステムを操作していくことができます。
この値は今後使いますので、コピーして手元にメモしておくか、新規タブで開いておくと便利です!

2-2. ステップ 2: ログインとスタック作成時に自動生成されたパスワードのリセット
さて、早速 EFS を操作したいところですが、先程の URL にアクセスすると、こちらの画面が表示されます。このように、許可されたユーザーだけにアクセスを許可するために、ログイン機能が搭載されています。
「Username」には、ステップ 1 で入力したメールアドレスを、「Password」には、メールアドレスに送られてきたパスワードを入力します。パスワードが送られてきていない場合は、入力したメールアドレスが間違えているか、迷惑メール等に送られている可能性もありますのでご確認ください。

パスワードを設定
正しくログインできると、このような画面になります。こちらの画面では、メールに送られてきた初期パスワードを変更することができますので、新しいパスワードを設定してください。

EFS の一覧表示
パスワードの変更も終わると、このような画面に遷移します。
こちらの画面例では何も表示されていませんが、ソリューションをデプロイした AWS アカウントとリージョン内に、EFS が作成されている場合は、全て一覧表示されます。

EFS ファイルシステムを作成
上記の画面では何も表示されていなかったので、マネジメントコンソールから EFS ファイルシステムを作成し、再度画面を更新してみました。すると、このように作成した EFS ファイルシステムの名前が出てきました !
ただ、ここで「Managed」の値をご覧ください。初期段階では false になっていますが、この状態ですと、EFS へのファイル操作を行うことができません。

2-3. ステップ 3: AWS Lambda のファイルマネージャー関数の作成
AWS Lambda のファイルマネージャ関数を作成
先程の画面の、false と表示されている部分をクリックします。すると、こちらの画面に遷移します。ここで、次の情報を入力します。
- User ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX ユーザー ID
- Group ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX グループ ID
- Path : このソリューションがルートディレクトリとして使用する、EFS ファイルシステムのディレクトリ。このディレクトリに存在するすべてのファイルやディレクトリは、先程のウェブページからアクセス可能となる

Lambda 関数の作成完了
私は上記画面のように、デフォルト値のままで「Submit」を押しましたが、User ID、Grooup ID、Path は環境に合わせた任意の値を選択してください。
「Submit」を押すとLambda 関数の作成が開始され、「Managed」の値が Creating に変化します。更に 1 ~ 2 分ほど待ち画面を更新すると、状態が true に変わりました。この状態で、「File System Id」の値をクリックすると、無事 EFS にアクセスすることができました !

新規にディレクトリを作成
しかし、まだ作りたての EFS を使っている私の環境では、この画面の様に中身は何も無いようです。ここではソリューションを体験する意味でも、新規にディレクトリを作成してみます !
なお、お客様の EFS の使用状況によっては、最初からファイルやディレクトリが存在している場合もあります。
では、「Create directory」をクリックしてみます。

任意の名前で作成

新しいディレクトリ作成完了
Submit すると、新しいディレクトリが作成されました ! このように、インスタンス等を経由することなく、サーバレスな構築で簡単に EFS への操作を行うことができるのが、このソリューションの大きなメリットになります。
しかし、現状だと 1 ユーザーのみしかアクセスできません。これでは不便なので、次のステップではアクセス可能なユーザーの作成を行います。

2-4. ステップ 4: 認証・認可のためのAmazon Cognito ユーザーの作成
このステップでは、Amazon Cognito を活用し、ユーザーの作成と認証・認可を管理します。
Amazon Cognito を開いてください。

ユーザープールを選択

ユーザーを作成

ユーザー作成画面
すると、ユーザー作成の画面が表示されますので、全てのフィールドに値を入力します。それぞれの説明は、以下のようになっております。
- 招待メッセージ : 「Eメールで招待を送信」を選択すると、入力したメールアドレスにユーザー名と仮パスワードのリマインダー通知が送られます。
- ユーザー名 : 先程のウェブページへログインする際の、Username として使います。
- E メールアドレス : 有効なメールアドレスを入力します。こちらに招待メッセージが送られてきます。
- 仮パスワード : 仮パスワードを入力します。後で変更可能です。
入力後、「ユーザーを作成」をクリックします。

グループ名を選択

ユーザーをグループに追加

グループ追加完了
その後、追加したいユーザーを選択し、右下の「追加」をクリックすることで、グループへの追加が完了します。
これで、追加したユーザーでのログインとファイルシステムの操作ができるようになったので、もう一度先程のウェブページに戻ってみます。

ログイン

ログイン成功
無事に新しいユーザーでもログインすることができました !
上記の手順で追加したユーザーも、ディレクトリの作成やファイルの追加が行えます。
「Simple File Manager for Amazon EFS」のソリューションのデプロイ・設定方法の説明は以上になります。ウェブページから簡単に EFS への操作ができるようになり、使う時以外はコストが発生しないので、気になった方は是非お試しください !

3. クリーンアップ
「Simple File Manager for Amazon EFS」ソリューションは、AWS マネジメントコンソール、または AWS Command Line Interface を使用してアンインストールできます。注意点としては、CloudFormation スタックを削除する前に、AWS Lambda のファイルマネージャー関数と EFS のアクセスポイントを手動で削除する必要があります。
今回はマネジメントコンソールによるアンインストールの方法を説明します。
3-1. AWS Lambda のファイルマネージャー関数と Amazon EFS のアクセスポイントの削除
まず、本ソリューションのウェブページにアクセスします。そして、「Managed」の値が true である場合、クリックします。
すると、このような画面に遷移します。ここで、 Delete をクリックすることで、Lambda のファイルマネージャー関数とEFS のアクセスポイントの削除を行うことができます。

Deleting 状態画面
Deleting の状態に変わりました。このまま少し待っておくと・・・

削除完了
このように false に戻り、無事削除が完了しました !
お客様の環境によっては、他にも true の EFS ファイルシステムが存在する可能性があります。本ソリューションをアンインストールする場合は、全てを false にするまで、各 EFS ファイルシステムに同じ手順を繰り返します。

3-2. CloudFormation スタックの削除
CloudFormation のコンソール画面を開きます。本ソリューションでは複数のスタックがネストされて作成されていますが、最初にテンプレートから名前をつけて作成したスタックを削除すれば、他のスタックも同時に削除されるのでご安心ください。
今回の私の例ですと、「SimpleFileManager」を選択し、削除をクリックします。確認画面が表示されるので、問題なければ「スタックの削除」をクリックします。

削除完了
正常に削除が実行されると、このように DELETE_IN_PROGRESS と表示されます。このまま、約 5 分ほど待ちます。ソリューションを削除する瞬間は、少し悲しいですね...
その後画面を更新すると、スタックの一覧から本ソリューションのスタックが全て消えます。
以上の手順で、全てのリソースを削除することができました !

4. コスト試算
本ソリューションのコストは、以下のサービスに対する利用量によって変動します。
1 か月あたりの Amazon API Gateway のリクエスト数
1 か月あたりの AWS Lambda の呼び出し数
Amazon CloudFront から配信される 1 か月あたりのウェブトラフィックのボリューム
Amazon Cognito で認証された 1 か月あたりのアクティブユーザー数
例として、米国東部 (バージニア北部) リージョンでこのソリューションをデフォルト設定で実行するコストは、2023 年 4 月現在で、1 か月あたり約 0.78 USD です。また、このソリューションは全てサーバーレスの AWS サービスで構成されています。そのため、このソリューションを使用していないときは、データストレージに対する料金のみが月間のコストになります。
試算コスト計算

5. まとめ
今回は、「Simple File Manager for Amazon EFS」というソリューションを活用することで、EFS ファイルシステムをウェブページのシンプルな UI から簡単にアクセスし、操作することができました ! 認証には Amazon Cognito を使用することで、安全な認証基盤と容易なユーザーの追加を可能としています。
また、コストという観点では、こちらのソリューションは使用した場合にのみ料金が発生します。ですので、ストレージ料金以外には、ウェブページからのファイル操作を行わない限り料金が発生しません !
非常にシンプルで便利、かつ試しやすいソリューションですので、興味を持たれた方は是非本ソリューションをデプロイし、その便利さを感じてみてください !
筆者・監修者プロフィール

筆者プロフィール

監修者プロフィール
稲田 大陸 (Riku Inada)
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
2021 年 4 月に AWS Japan に入社し、筋トレが趣味なソリューションアーキテクトです。現在は製造業のお客様を中心にクラウド活用の技術支援を担当しています。好きな AWS のサービスは AWS Amplify と Amazon Location Service です。週末には美味しいお酒を求めてフラフラしています。
Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages