AWS Storage Gateway(S3 File Gateway)を利用して手軽にデータをS3へ保管してみた

記事タイトルとURLをコピーする

はじめに

こんにちは!サーバーワークスの阿部です。

さて、今回はブログタイトルの通り、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バケットは作成済みが前提となります。

  1. 必要なセキュリティグループの作成
  2. 必要なエンドポイントの作成
  3. EC2の作成
  4. S3 File Gatewayの作成
  5. ファイル共有の作成

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」をアタッチします。

docs.aws.amazon.com

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

docs.aws.amazon.com

上記が設定できたらインスタンスを起動します。

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名はエンドポイントの詳細から確認できます。

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を選択します。 データを保管したい対象バケットを設定します。 また、ユーザー認証は検証のため「ゲストアクセス」にし、パスワードを設定しました。

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

ファイル共有作成直後は「利用不可」となる

2~3分待機してから画面を更新すると「利用可能」になる

ここまでで、準備は整いました。 早速動作確認してみます。

動作確認

ファイル共有の詳細画面から、接続コマンドが確認できるのでコピーし、 コマンドプロンプトに貼り付けて実行します。

ユーザー名とパスワードが求められますが、ユーザー名はデフォルトで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 を一つの選択肢としてご検討ください。 この記事がどなたかのお役に立てれば嬉しいです。

阿部伊織(執筆記事の一覧)

インフラエンジニアからクラウドエンジニアへ転職。