1. 目的
Storage Gateway は、オンプレミスのサーバをAWSストレージと接続することを主目的としたサービスですが、EC2との接続も可能です。その実態は、Storage Gateway用にAWSが準備したAMIイメージをもつEC2インスタンスで、マウント元のEC2インスタンスとS3とを標準マウントプロトコルで仲介します。
接続元のEC2インスタンスのOSによって、マウントプロトコルが異なります。
- Linuxクライアント: NFS バージョン 3 または 4.1 プロトコル
- Windowsクライアント:SMB ファイルシステムのバージョン 2 および 3 のプロトコル
本投稿では、EC2(Linuxクライアント)をStorage Gatewayを介してNFSプロトコルでS3にマウントする設定する方法について解説します。
2. 前提
以下概念図が示す通り3つの構成要素が存在しますが、EC2インスタンスとS3の設定手順は本手順書では対象外となります。以下条件と満たすように、AWS公式ページから作成してください。
EC2インスタンス: S3にマウント先にもつLinuxサーバ。
- Linux OSベースのAMIで作成されていること
- マウント先のS3へアクセス可能なIAMロールがアタッチされていること
S3: マウント先のストレージ
- StorageGWおよびEC2インスタンスからアクセス可能なIAMポリシが設定されていること
StorageGW: EC2インスタンスとS3を仲介するゲートウェイ。実態はEC2インスタンス。

3. Storage Gatewayの作成
3-1. Storage Gateway用EC2インスタンスの起動
Storage Gatewayを作成したいリージョンを選択して、「ゲートウェイの作成」を押下します。以下画面に遷移しますので、「ファイルゲートウェイ」を選択します。

「Amazon EC2」を選択します。

上記画面で、「インスタンスの起動」を押すと、Storage Gateway用のEC2インスタンスの作成画面に遷移します。一般的なEC2インスタンスと同様の要領で作成するのですが、以下注意事項があります。
AMIイメージ
Storage Gateway用のAMIイメージが選択されていることを確認します。

インスタンスタイプ
Amazon EC2でゲートウェイをデプロイする場合、ゲートウェイが機能するためにはインスタンスサイズは少なくとも xlarge である必要があります。ただし、コンピューティング最適化インスタンスファミリーの場合は、サイズとして少なくとも 2xlarge が必要ですゲートウェイの種類に応じて次のインスタンスタイプのうち 1 つを使用することをお勧めします。
- 汎用インスタンスファミリー — m4 または m5 インスタンスタイプ。
- コンピューティング最適化インスタンスファミリー — c4 または c5 インスタンスタイプ。2xlarge 以上のインスタンスサイズを選択し、必要な RAM 要件を満たします。
- メモリ最適化インスタンスファミリー — r3 インスタンスタイプ。
- ストレージ最適化インスタンスファミリー — i3 インスタンスタイプ。
ストレージ
Storage Gatewayには、VM 用の 80 GiB 以外にもディスク領域が必要になります。次の表は、デプロイされるゲートウェイのローカルディスクストレージの推奨サイズを示しています。したがって、ファイルゲートウェイとしてのStorage Gatewayには、最低でも230GBの領域が必要であることを注意しなければなりません。

上記仕様に従い、以下のようにストレージ設定画面で少なくとも150GiBのEBSをアタッチします。

セキュリティグループ
Storage Gatewayのポート要件に記載の通り、インバウンドとアウトバウンドの通信許可を設定します。
上記事項を注意しパラメータの設定が完了したら、「起動」を押下してStorage Gateway用EC2インスタンスを起動します。
3-2. Storage Gatewayのアクティブ化
Storage Gateway用EC2インスタンスが起動したら設定しているWebブラウザから接続可能なIPアドレス(今回はパブリックIPアドレス)を入力して、「ゲートウェイに接続」を押下します。

タイムゾーンとTagを編集して「ゲートウェイのアクティブ化」を押下すると、Storage Gatewayのアクティブ化が完了です。

3-3. Storage Gatewayのストレージ割り当て
Storage Gatewayのアクティブ化が完了すると、「ステータス」欄に実行中の文字が表示されます。

キャッシュ用にアタッチしたEBSを割り当てるとストレージ割り当てが完了します。

4. マウントの設定
Storage Gatewayの設定画面から「ファイル共有の設定」を押下して、

接続先のAmazon S3バケット名を選択肢して、

オブジェクトストレージクラス、オブジェクトメタデータ、IAMロールの設定を行い「次」へを押下すると、

ファイル共有用の領域と接続用のコマンドが発行されます。

このコマンドをマウント元のEC2インスタンスで実行することで、正常にマウントが実行されます。
mount -t nfs -o nolock,hard XXX.XXX.XXX.XXX:/bucket /home/ec2-user/mount-test
以下の通りマウントができていることが確認できたら設定は完了です。個人情報はマスキングしておきます。
df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 8194060 0 8194060 0% /dev
tmpfs 8212108 0 8212108 0% /dev/shm
tmpfs 8212108 484 8211624 1% /run
tmpfs 8212108 0 8212108 0% /sys/fs/cgroup
/dev/xvda1 314560492 3316464 311244028 2% /
tmpfs 1642424 0 1642424 0% /run/user/1000
XXX.XXX.XXX.XXX:/bucket-XXXX 9007199254740992 0 9007199254740992 0% /home/ec2-user/mount-test ←ここです
以上