Simple File Manager for Amazon EFS でウェブページからシンプルな UI でファイル操作をしてみた !

2023-08-02
AWS ソリューション紹介

神谷 敏樹 (監修 : 稲田 大陸)

皆さん、こんにちは! プロフェッショナルサービスコンサルタントの神谷です。
皆様はこれまでに 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 サービスで構成されています。デプロイ後もウェブページからのファイル操作を行わない限りはコストが発生しないため、お気軽にお試しいただけます ! (コストの詳しい部分に関しては、後述します)

それでは、実際の構築方法や使用方法を見ていきましょう!

この記事のデモを無料でお試しいただけます »

毎月提供されるデベロッパー向けアップデート情報とともに、クレジットコードを受け取ることができます。 


1. Simple File Manager for Amazon EFS とは ?

1-1. アーキテクチャの全体像

このソリューションの 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 のスタック作成の画面に遷移します。こちらのスタック作成のページから、実際にテンプレートを用いてソリューションをデプロイします。なお、このソリューションの実装では、右画面の右上の設定から、リージョンとして東京リージョンや大阪リージョンなどを選択することが可能です。

まず、「テンプレートの準備完了」が選択された状態で、「テンプレートの指定」には、Amazon S3 URL と、テンプレートの URL が自動入力された状態であることを確認し、「次へ」を押します。

クリックすると拡大します

次に、「スタックの詳細を指定」の画面で、「スタックの名前」に任意の名前を入力します。今回は、「SimpleFileManager」としました。「パラメータ」には、AdminEmail として、管理者のメールアドレスを入力します。

画面の例では架空のメールアドレスが入力されていますが、このアドレスに初期ログイン時のパスワードが送付されます。実際に使用される場合は受信可能なメールアドレスを入力ください。

名前とメールアドレスを入力したら、「次へ」を押してください。

クリックすると拡大します

次の画面では、スタックオプションの設定を行うことができますが、このソリューションでは特に変更はせず、「次へ」を押してください。

最後にスタックのレビューページが表示されます。ここで、パラメータとして AdminEmail が正しく入力されているかどうかを確認してください。

クリックすると拡大します

また、レビュー画面の最下部にこちらの様な注意画面が表示されています。テンプレートによって AWS Identity and Access Management (IAM) リソースが作成されること、および特定の機能が必要であることを承認の上、チェックボックスをオンにします。その後、「送信」を押すことで、スタックがデプロイされます。

クリックすると拡大します

SimpleFileManager スタック (最初に名前を付けたスタック) のステータスが、「CREATE_COMPLETE」になれば無事デプロイ完了です !

私の場合ですと、大体 10 分ほどでデプロイ完了しました。

クリックすると拡大します

スタックのデプロイ完了後、右のように出力タブを見てみると「EFSFileSimpleWebsiteUrl」というキーに対応した値として、URL が表示されています。こちらの URL にアクセスすることで、ウェブブラウザから EFS ファイルシステムを操作していくことができます。

この値は今後使いますので、コピーして手元にメモしておくか、新規タブで開いておくと便利です!

クリックすると拡大します

2-2. ステップ 2: ログインとスタック作成時に自動生成されたパスワードのリセット

さて、早速 EFS を操作したいところですが、先程の URL にアクセスすると、こちらの画面が表示されます。このように、許可されたユーザーだけにアクセスを許可するために、ログイン機能が搭載されています

Username」には、ステップ 1 で入力したメールアドレスを、「Password」には、メールアドレスに送られてきたパスワードを入力します。パスワードが送られてきていない場合は、入力したメールアドレスが間違えているか、迷惑メール等に送られている可能性もありますのでご確認ください。

クリックすると拡大します

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

クリックすると拡大します

パスワードの変更も終わると、このような画面に遷移します。

こちらの画面例では何も表示されていませんが、ソリューションをデプロイした AWS アカウントとリージョン内に、EFS が作成されている場合は、全て一覧表示されます

クリックすると拡大します

上記の画面では何も表示されていなかったので、マネジメントコンソールから EFS ファイルシステムを作成し、再度画面を更新してみました。すると、このように作成した EFS ファイルシステムの名前が出てきました !

ただ、ここで「Managed」の値をご覧ください。初期段階では false になっていますが、この状態ですと、EFS へのファイル操作を行うことができません

クリックすると拡大します

2-3. ステップ 3: AWS Lambda のファイルマネージャー関数の作成

このステップでは、自身が作成したソリューションに EFS へのアクセス権を付与するために、AWS Lambda のファイルマネージャ関数を作成します。

先程の画面の、false と表示されている部分をクリックします。すると、こちらの画面に遷移します。ここで、次の情報を入力します。

  • User ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX ユーザー ID
  • Group ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX グループ ID
  • Path : このソリューションがルートディレクトリとして使用する、EFS ファイルシステムのディレクトリ。このディレクトリに存在するすべてのファイルやディレクトリは、先程のウェブページからアクセス可能となる

クリックすると拡大します

私は上記画面のように、デフォルト値のままで「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 を開いてください。

クリックすると拡大します

まずは、ユーザープールの中の、「SimpleFileManagerUserPool-(ランダムな文字列)」をクリックします。

クリックすると拡大します

次に、こちらの画面で「ユーザーを作成」をクリックします。

クリックすると拡大します

すると、ユーザー作成の画面が表示されますので、全てのフィールドに値を入力します。それぞれの説明は、以下のようになっております。

  • 招待メッセージ : 「Eメールで招待を送信」を選択すると、入力したメールアドレスにユーザー名と仮パスワードのリマインダー通知が送られます。
  • ユーザー名 : 先程のウェブページへログインする際の、Username として使います。
  • E メールアドレス : 有効なメールアドレスを入力します。こちらに招待メッセージが送られてきます。
  • 仮パスワード : 仮パスワードを入力します。後で変更可能です。

入力後、「ユーザーを作成」をクリックします。

クリックすると拡大します

次に、ユーザーをグループへ追加します。こちらの画面から、「User group for Simple File Manager Admins」 という説明がついたグループ名をクリックします。

クリックすると拡大します

すると、このような画面に遷移するので、「ユーザーをグループに追加」をクリックします。

クリックすると拡大します

その後、追加したいユーザーを選択し、右下の「追加」をクリックすることで、グループへの追加が完了します。

これで、追加したユーザーでのログインとファイルシステムの操作ができるようになったので、もう一度先程のウェブページに戻ってみます。

クリックすると拡大します

先程作成したユーザー名でログインを試してみます。

クリックすると拡大します

無事に新しいユーザーでもログインすることができました !

クリックすると拡大します

上記の手順で追加したユーザーも、ディレクトリの作成やファイルの追加が行えます。

「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 の状態に変わりました。このまま少し待っておくと・・・

クリックすると拡大します

このように 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 サービスで構成されています。そのため、このソリューションを使用していないときは、データストレージに対する料金のみが月間のコストになります。

AWS のサービス 利用単位 月額コスト
Amazon EFS スタンダードストレージ/GB/月 0.30 USD
Amazon API Gateway 50,000 件のリクエスト/月 0.17 USD
AWS Lambda 100,000 回の呼び出し/月 (平均 300 ms の実行時間と 128 MB のメモリ) 0.08 USD
Amazon CloudFront インターネットへの AWS リージョン内データ転送送信: 最初の 10 TB 0.085 USD
オリジンへの AWS リージョン内データ転送送信: すべてのデータ転送 0.020 USD
HTTPS リクエスト: 50,000 リクエスト/月 X (0.01 USD/10,000 リクエスト) 0.05 USD
Amazon S3 ストレージ (0.04 GB) と 50,000 件の get リクエスト/月 0.02 USD
Amazon Cognito 10 ユーザー x (0.0055 USD/月間アクティブユーザー (MAU)) 0.055 USD
    合計: 0.78 USD

5. まとめ

今回は、「Simple File Manager for Amazon EFS」というソリューションを活用することで、EFS ファイルシステムをウェブページのシンプルな UI から簡単にアクセスし、操作することができました ! 認証には Amazon Cognito を使用することで、安全な認証基盤と容易なユーザーの追加を可能としています。

また、コストという観点では、こちらのソリューションは使用した場合にのみ料金が発生します。ですので、ストレージ料金以外には、ウェブページからのファイル操作を行わない限り料金が発生しません !

非常にシンプルで便利、かつ試しやすいソリューションですので、興味を持たれた方は是非本ソリューションをデプロイし、その便利さを感じてみてください !


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

神谷 敏樹 (Toshiki Kamiya)
アマゾン ウェブ サービス ジャパン合同会社
プロフェッショナルサービス

2022 年 4 月に AWS Japan に入社。お酒が何より大好きで、仕事終わりには美味しいお店をせっせと探してます。結果、入社以来 10 Kg の増量に成功。現在は DX Advisory として、お客様の DX 推進や新規事業創出、事業成長のためのコンサルティングサービスを提供しています。好きな AWS サービスは Amazon Cognito です。愛するゲームはスマッシュブラザーズ。

監修者プロフィール

稲田 大陸 (Riku Inada)
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

2021 年 4 月に AWS Japan に入社し、筋トレが趣味なソリューションアーキテクトです。現在は製造業のお客様を中心にクラウド活用の技術支援を担当しています。好きな AWS のサービスは AWS AmplifyAmazon Location Service です。週末には美味しいお酒を求めてフラフラしています。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する