はじめに
こんにちは!サーバーワークスの阿部です。
さて、今回はブログタイトルの通り、AWS Storage Gateway(S3 File Gateway)を利用して、オンプレミス環境のデータをAWS S3へ手軽に保管・退避する手順をご紹介します。
背景
オンプレミスファイルサーバーの共通課題
私がお客様のファイルサーバー移行案件に携わる中で、まず第一に相談いただくのが「オンプレミスファイルサーバーのデータ退避・バックアップ」に関する内容です。
多くの企業が以下のような共通の課題を抱えています。
- ① 遠隔地への冗長化が難しい: ローカル環境でのバックアップは、災害時のデータ保護に不安が残る。
- ② 物理メディアやストレージ管理のコスト・手間: テープや外部ストレージの運用・交換に手間がかかる。
- ③ コストと手軽さのバランス: DataSyncやSnowballといった専用の移行サービスがある一方で、「まずは安価に、かつ手軽にデータをクラウドへ退避させたい」というニーズも多くあります。
なぜ AWS Storage Gateway(S3 File Gateway) なのか
AWSへ大量のデータを持ち込むサービスはいくつかありますが、今回 AWS Storage Gateway(S3 File Gateway) を選択肢としてご紹介するのは、「低コスト」かつ「操作性の維持」という二つのメリットがあるからです。
S3 File Gatewayは、オンプレミス環境からNFS/SMBプロトコルでアクセスでき、S3をバックアップ保管用サーバーのように利用できます。これにより、既存のバックアップスクリプトやオペレーションを変えることなく、S3の高い耐久性・低コストなストレージを享受できます。
「提案する自分が試したことがないのはまずい」という思いから、今回実際に検証を行いました。本記事ではその手順まとめています。
留意点
S3 File Gatewayはオンプレミスからファイル共有(NFS/SMB)としてマウントできますが、ここでご紹介する利用目的はあくまで「バックアップ保管用」です。
一般的なファイル共有サーバーとしての利用は想定されていません。
これは、S3 File Gatewayに以下の機能が備わっていないためです。
- 最大IOPSやスループットの設定
- クォータ制御(ユーザーやグループごとの利用容量制限)
- スナップショットや世代管理(ファイルサーバーレベルの機能)
したがって、日常的に利用者がファイルを直接操作するファイル共有サーバーとしてではなく、あくまで既存のバックアップシステムからのデータ保管先として利用することで、S3 File Gatewayの価値を最大限に引き出すことができます。
構成図
今回は完全にプライベートな環境を想定して検証します。

やってみた
おおまかな構築の流れは以下の通りです。 VPC、サブネット、ルートテーブル、S3バケットは作成済みが前提となります。
- 必要なセキュリティグループの作成
- 必要なエンドポイントの作成
- EC2の作成
- S3 File Gatewayの作成
- ファイル共有の作成
1. 必要なセキュリティグループの作成
作成予定のインターフェース型エンドポイントと、EC2にアタッチするセキュリティグループをあらかじめ作成しておきます。 今回作成するセキュリティグループは以下です。
| セキュリティグループ名 | アタッチ先 | 用途 | ルール |
|---|---|---|---|
| SSM-SG | SSMエンドポイント | プライベート環境のEC2を操作するのにSession Manager経由でログインするため | EC2からの443 / TCPをインバウンド許可 |
| SSM-MSG-SG | SSM Messagesエンドポイント | プライベート環境のEC2を操作するのにSession Manager経由でログインするため | EC2からの443 / TCPをインバウンド許可 |
| SGW-SG | Storage Gatewayエンドポイント | File Gatewayをアクティベーションするため | EC2から以下のインバウンド許可 ・443 / TCP ・1026-1028 / TCP ・1031 / TCP ・2222 / TCP |
| FGW-SG | File Gateway用EC2 | File Gateway用EC2とアクティベーション用EC2の通信を行うため | アクティベーション用EC2から以下のインバウンド許可 ・443 / TCP ・80/ TCP |
2. 必要なエンドポイントの作成
AWS Storage Gateway(S3 File Gateway)の利用と、プライベート環境のEC2にSSM経由でログインするために必要な エンドポイントを作成します。
| エンドポイント | エンドポイントタイプ | 用途 |
|---|---|---|
| com.amazonaws.ap-northeast-1.s3 | ゲートウェイ型 | S3 File Gateway がS3バケットへ接続するため |
| com.amazonaws.ap-northeast-1.ssm | インターフェイス型 | プライベート環境のEC2がSSMエンドポイントと通信するため |
| com.amazonaws.ap-northeast-1.ssmmessages | インターフェイス型 | プライベート環境のEC2がSSMエンドポイントと通信するため |
| com.amazonaws.ap-northeast-1.storagegateway | インターフェイス型 | S3 File Gateway がStorage Gatewayエンドポイントと通信するため |

3. EC2の作成
最低限必要なEC2は1台です。(File Gatewayも含めると2台)
- File Gatewayアクティベーション用EC2(Linux/Windowsどちらでも可)
今回はSMBによる動作検証も行いたいのでアクティベーション用EC2をWindowsにし、アクティベーションとクライアントを兼ねたマシンとします。
アクティベーション用EC2
カタログより、日本語のAMIを選択してEC2を起動します。 EC2のロールにはSSMエンドポイントと通信できるよう、「AmazonSSMManagedInstanceCore」を割り当てるのを忘れないでください。

4. S3 File Gatewayの作成
File Gateway用EC2(専用AMI)
Storage Gatewayコンソールから「ゲートウェイの作成」を選択します。 ゲートウェイ名を入力し、ゲートウェイタイプは「Amazon S3 ファイルゲートウェイ」を選択します。

プラットフォームオプションで「Amazon EC2」を選択し、「設定をカスタマイズ」から「インスタンスを起動」を押下します。

ファイルゲートウェイ用のAMIが選択された状態でEC2作成画面が開くので、マシン名を入力。 インスタンスタイプはFile Gatewayの最低要件を満たす「m5.xlarge」で起動します。 セキュリティグループは、作成済みの「FGW-SG」をアタッチします。

ディスクについて、ファイルゲートウェイを動作させるにはVM 用の 80 GiB のディスク容量に加えて、ゲートウェイ用の追加のディスクが最低 150 GiB 必要です。

上記が設定できたらインスタンスを起動します。
File Gateway
インスタンスの起動が確認できたら、Storage Gatewayコンソールに戻り、 チェックを入れて「次へ」を押下します。

接続オプションを「アクティベーションキー」にすると。アクティベーションキーの入力を求められます。

アクティベーションキーを取得するために、先程作成したアクティベーション用EC2にログインします。
ログイン後、Windowsであればコマンドプロンプト、Linuxの場合はそのままプロンプト上で、アクティベーションキーの表示コマンドを実行します。
curl "http://[File Gateway用EC2のIPアドレス]/?activationRegion=ap-northeast-1&vpcEndpoint=[Storage GatewayエンドポイントのDNS名]&no_redirect"
この時、以下の情報が必要になりますので、それぞれ控えておいてください。
- File Gateway用EC2のIPアドレス
- Storage GatewayエンドポイントのDNS名
Storage GatewayエンドポイントのDNS名はエンドポイントの詳細から確認できます。

コマンドが成功すると、以下のようにアクティベーションキーが返されます。
C:\Users\Administrator>curl "http://192.168.139.185/?activationRegion=ap-northeast-1&vpcEndpoint=vpce-09338a0d641308d7d-afk0k8je.storagegateway.ap-northeast-1.vpce.amazonaws.com&no_redirect" U2FVG-4Q95B-NCA2V-A3P7G-MKVCR
このアクティベーションキーを先程の入力画面で入力し、「次へ」を押下します。 確認画面で問題がなければ「アクティブゲートウェイ」を押下します。

画面遷移後、数十秒待機すると以下のようにキャッシュストレージとして、インスタンス作成時に設定したボリュームが設定されます。

CloudWatchロググループやアラームの設定は検証なので無効状態で設定します。

無事にゲートウェイが作成されました。

5. ファイル共有
ゲートウェイ作成後は、接続したいS3バケットに対するファイル共有を作成する必要があります。 ゲートウェイの概要画面から「ファイル共有の作成」を押下します。

ファイル共有は今回SMBを選択します。 データを保管したい対象バケットを設定します。 また、ユーザー認証は検証のため「ゲストアクセス」にし、パスワードを設定しました。

ファイル共有作成直後は以下のように「利用不可」となりますが、 数分待ってから更新すると「利用可能」に変わります。


ここまでで、準備は整いました。 早速動作確認してみます。
動作確認
ファイル共有の詳細画面から、接続コマンドが確認できるのでコピーし、 コマンドプロンプトに貼り付けて実行します。

ユーザー名とパスワードが求められますが、ユーザー名はデフォルトでsmbguestです。
パスワードはファイル共有作成時に設定したものを入力します。
C:\Users\Administrator>net use Z: \\192.168.139.185\test-filegateway-1234567891011 '192.168.139.185' のユーザー名を入力してください: smbguest 192.168.139.185 のパスワードを入力してください: コマンドは正常に終了しました。
無事にマウントされていることが確認できました。

試しにファイルを置いてみましたが問題なくできています。

S3コンソールからもファイルが格納されているのを確認できました。

おわりに
本記事では、AWS Storage Gateway(S3 File Gateway)を利用した、オンプレミスデータのS3への保管手順をご紹介しました。
構築の際にアクティベーションが必要等、少し手間の部分はありますが、一度構築すれば低コスト、高耐久性、操作性の維持という大きなメリットがあると思います。 日常的なファイルサーバーとしては利用できませんが、遠隔地バックアップやデータ退避といった用途には非常に適したソリューションです。
クラウドへのデータ保管方法を検討されている方は、ぜひ Storage Gateway を一つの選択肢としてご検討ください。 この記事がどなたかのお役に立てれば嬉しいです。
阿部伊織(執筆記事の一覧)
インフラエンジニアからクラウドエンジニアへ転職。