メインコンテンツに移動
AWS ソリューション紹介

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

2023-08-02 | Author : 神谷 敏樹 (監修 : 稲田 大陸)

はじめに

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

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


X ポスト » | Facebook シェア » | はてブ »

Screenshot of a web interface for a simple file manager connected to an Amazon EFS filesystem, showing navigation with folders and an area listing files with options to upload, download, or delete files.

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 コンソールで起動する」をクリックします。

Amazon EFS用のシンプルファイルマネージャーの設定手順やデプロイ情報が記載された日本語のスクリーンショット。バージョン、リリース日、作成者、予想デプロイ時間、コスト情報とAWSコンソールから起動するオプションが含まれています。

CloudFormation のスタック作成

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

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

Screenshot of the AWS CloudFormation interface in Japanese, showing the stack creation process using an Amazon S3 URL for an Amazon EFS template.

スタックの詳細を指定

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

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

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

Screenshot of the AWS CloudFormation interface in Japanese showing the stack details setup page for the SimpleFileManager stack, including fields for stack name and admin email address.

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

次の画面では、 スタックオプションの設定を行うことができますが、このソリューションでは特に変更はせず、「 次へ」を押してください。
Screenshot of the AWS CloudFormation 'Stack Options Settings' page displayed in Japanese, showing configuration options for tags, access permissions, stack failure options, detailed options, and navigation controls.

スタックのレビュー画面

最後にスタックのレビューページが表示されます。ここで、パラメータとして AdminEmail が正しく入力されているかどうかを確認してください。
Screenshot of the AWS CloudFormation stack creation review page for SimpleFileManager in Japanese, showing the template URL, stack description, and the AdminEmail parameter set to kamiya@example.com.

レビュー画面の最下部

また、レビュー画面の最下部にこちらの様な注意画面が表示されています。テンプレートによって AWS Identity and Access Management (IAM) リソースが作成されること、および特定の機能が必要であることを承認の上、チェックボックスをオンにします。その後、「 送信」を押すことで、スタックがデプロイされます。
Screenshot of an AWS CloudFormation warning message in Japanese regarding required capabilities, specifically mentioning IAM resources and CloudFormation::Stack. The message advises users to verify permissions and custom names when creating IAM resources and highlights that AWS CloudFormation may require additional capabilities such as CAPABILITY_AUTO_EXPAND. The dialog includes confirmation checkboxes and Japanese instructional text.

デプロイ完了で

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

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

AWS CloudFormation コンソール上で SimpleFileManager スタックが CREATE_COMPLETE(作成完了)ステータスになっている日本語インターフェイスのスクリーンショット。EFS用のSimple File Managerソリューションが正しく作成された状態を示します。

URL を保存

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

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

Screenshot of the AWS SimpleFileManager interface showing the EFS Output tab in Japanese, displaying the export value for EFSFileSimpleWebsiteUrl.

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

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

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

Screenshot of the login screen for the Simple File Manager for Amazon EFS. The interface prompts for a username and password, with an option to reset the password and a 'Sign In' button on the right side.

パスワードを設定

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

Screenshot of the reset password screen for the Simple File Manager application using Amazon EFS, showing a form to enter a new password and a submit button.

EFS の一覧表示

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

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

Screenshot of the AWS Console showing the Simple File Manager interface with a message stating that no Amazon EFS file systems are found, and suggesting to create an EFS filesystem in the AWS console.

EFS ファイルシステムを作成

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

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

Screenshot of the Simple File Manager interface showing the list of Amazon EFS filesystems, including columns for Name, Managed status, File System Id, and Lifecycle State.

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

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

AWS Lambda のファイルマネージャ関数を作成

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

  • User ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX ユーザー ID
  • Group ID : Lambda が、ファイルシステムのリクエストを行うために使用する数字の POSIX グループ ID
  • Path : このソリューションがルートディレクトリとして使用する、EFS ファイルシステムのディレクトリ。このディレクトリに存在するすべてのファイルやディレクトリは、先程のウェブページからアクセス可能となる
Screenshot of the Amazon EFS Simple File Manager interface, showing the form for creating a file manager Lambda function with fields for user ID, group ID, and file system directory path.

Lambda 関数の作成完了

私は上記画面のように、デフォルト値のままで「Submit」を押しましたが、User ID、Grooup ID、Path は環境に合わせた任意の値を選択してください。

Submit」を押すとLambda 関数の作成が開始され、「Managed」の値が Creating に変化します。更に 1 ~ 2 分ほど待ち画面を更新すると、状態が true に変わりました。この状態で、「File System Id」の値をクリックすると、無事 EFS にアクセスすることができました !

Screenshot of the Simple File Manager interface displaying a list of Amazon EFS filesystems, showing columns for Name, Managed status, File System Id, and Lifecycle State.

新規にディレクトリを作成

しかし、まだ作りたての EFS を使っている私の環境では、この画面の様に中身は何も無いようです。ここではソリューションを体験する意味でも、新規にディレクトリを作成してみます !

なお、お客様の EFS の使用状況によっては、最初からファイルやディレクトリが存在している場合もあります。

では、「Create directory」をクリックしてみます。

Screenshot of the Amazon EFS Simple File Manager interface showing filesystem navigation, directory creation, and file upload options.

任意の名前で作成

すると、ディレクトリの名前入力画面が出てくるので、好きな名前で作成します。
Screenshot of the Amazon EFS Simple File Manager interface displaying the 'Create Directory' dialog box, where a new directory name is being entered.

新しいディレクトリ作成完了

Submit すると、新しいディレクトリが作成されました ! このように、インスタンス等を経由することなく、サーバレスな構築で簡単に EFS への操作を行うことができるのが、このソリューションの大きなメリットになります。

しかし、現状だと 1 ユーザーのみしかアクセスできません。これでは不便なので、次のステップではアクセス可能なユーザーの作成を行います。

Screenshot of the Amazon Elastic File System (EFS) Simple File Manager interface showing a newly created directory named 'kamiya-test' within filesystem fs-0e99af2592f7b3384.

2-4. ステップ 4: 認証・認可のためのAmazon Cognito ユーザーの作成

このステップでは、Amazon Cognito を活用し、ユーザーの作成と認証・認可を管理します。

Amazon Cognito を開いてください。

Screenshot of the AWS Management Console showing search results for 'Cognito' with interface language set to Japanese. The image displays categorized results for services and resources related to AWS Cognito.

ユーザープールを選択

まずは、ユーザープールの中の、「 SimpleFileManagerUserPool-(ランダムな文字列)」をクリックします。
Screenshot of the Amazon Cognito user pool interface in Japanese, showing a simple file manager user pool setup for Amazon EFS.

ユーザーを作成

次に、こちらの画面で「 ユーザーを作成」をクリックします。
Screenshot of the AWS Cognito user pool management page displayed in Japanese, showing details for a user pool named 'SimpleFileManagerUserPool-IdgrUtvSAFOc' including summary, user pool ID, ARN, creation date, last updated, and user management controls.

ユーザー作成画面

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

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

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

Screenshot of the Amazon Cognito user creation interface in Japanese, showing fields for user information, email address, phone number options, and password settings.

グループ名を選択

次に、ユーザーをグループへ追加します。こちらの画面から、「 User group for Simple File Manager Admins」 という説明がついたグループ名をクリックします。
Screenshot of the Amazon Cognito console showing Simple File Manager user pool group settings in Japanese, including user pool details and a user group for administrators.

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

すると、このような画面に遷移するので、「 ユーザーをグループに追加」をクリックします。
Screenshot of the Amazon Cognito console displaying the details for the user group 'SimpleFileManager-EFSFileAuthentication-JZJ43H44QDAM-Admins' for Simple File Manager Admins, including IAM role ARN, group members, and group information. The interface is shown in Japanese.

グループ追加完了

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

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

Screenshot of the Amazon Cognito interface in Japanese, showing the process of adding a user to the group 'SimpleFileManager-EFSFileAuthentication-JZJ43H44QDAM-Admins', with user selection options and status indicators.

ログイン

先程作成したユーザー名でログインを試してみます。
Screenshot of the Simple File Manager login screen for Amazon EFS, showing fields for username and password, and a sign-in button.

ログイン成功

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

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

「Simple File Manager for Amazon EFS」のソリューションのデプロイ・設定方法の説明は以上になります。ウェブページから簡単に EFS への操作ができるようになり、使う時以外はコストが発生しないので、気になった方は是非お試しください !

Screenshot of the Simple File Manager interface displaying a list of filesystems in Amazon EFS, showing columns for Name, Managed, File System Id, and Lifecycle State, with a sample entry named 'kamiya-blog'.

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 のアクセスポイントの削除を行うことができます。

Screenshot of the Simple File Manager user interface for deleting an Amazon EFS filesystem, showing the filesystem ID, a delete confirmation prompt, and a delete button.

Deleting 状態画面

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

Screenshot of the Simple File Manager interface showing a list of Amazon EFS filesystems, including columns for Name, Managed status, File System Id, and Lifecycle State.

削除完了

このように false に戻り、無事削除が完了しました !

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

Screenshot of a Simple File Manager interface displaying an Amazon EFS filesystems list, showing columns for Name, Managed status, File System Id, and Lifecycle State.

3-2. CloudFormation スタックの削除

CloudFormation のコンソール画面を開きます。本ソリューションでは複数のスタックがネストされて作成されていますが、最初にテンプレートから名前をつけて作成したスタックを削除すれば、他のスタックも同時に削除されるのでご安心ください。

今回の私の例ですと、「SimpleFileManager」を選択し、削除をクリックします。確認画面が表示されるので、問題なければ「スタックの削除」をクリックします。

Screenshot of the AWS CloudFormation console in Japanese showing the deployment status of multiple stacks related to the Simple File Manager for Amazon EFS solution, with all stacks marked as CREATE_COMPLETE.

削除完了

正常に削除が実行されると、このように DELETE_IN_PROGRESS と表示されます。このまま、約 5 分ほど待ちます。ソリューションを削除する瞬間は、少し悲しいですね...

その後画面を更新すると、スタックの一覧から本ソリューションのスタックが全て消えます。

以上の手順で、全てのリソースを削除することができました !

Screenshot of the AWS CloudFormation console in Japanese, showing a list of Simple File Manager stacks for Amazon EFS, including web, authentication, and API stacks, with various statuses such as CREATE_COMPLETE and DELETE_IN_PROGRESS.

4. コスト試算

本ソリューションのコストは、以下のサービスに対する利用量によって変動します。

  • 1 か月あたりの Amazon API Gateway のリクエスト数

  • 1 か月あたりの AWS Lambda の呼び出し数

  • Amazon CloudFront から配信される 1 か月あたりのウェブトラフィックのボリューム

  • Amazon Cognito で認証された 1 か月あたりのアクティブユーザー数

例として、米国東部 (バージニア北部) リージョンでこのソリューションをデフォルト設定で実行するコストは、2023 年 4 月現在で、1 か月あたり約 0.78 USD です。また、このソリューションは全てサーバーレスの AWS サービスで構成されています。そのため、このソリューションを使用していないときは、データストレージに対する料金のみが月間のコストになります。

試算コスト計算

AWSの各サービス(Amazon EFS、API Gateway、Lambda、CloudFront、S3、Cognito)の月額コスト・無料利用枠を日本語でまとめた比較表の画像。各サービスの利用単位、コスト、合計コストが表形式で示されている。

5. まとめ

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

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

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

筆者・監修者プロフィール

A person in a maroon shirt sitting at a table with two patterned cups, next to a brown leather pig sculpture placed on a wooden stool. The background features a decorative wall with greenery arranged in the shape of continents.

筆者プロフィール

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

監修者プロフィール

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

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