カスタマーサポート課の伊藤です。
昨年のre:Inventでストレージゲートウェイに新機能、ファイルゲートウェイが追加されました。
さらに、発表当初はオンプレミス限定でしたが、このファイルゲートウェイがEC2でも利用可能となりましたので、本エントリーで新機能をご紹介いたします。
インスタンスの起動
始めに、インスタンスの作成を行います。
ストレージゲートウェイには専用のインスタンスが必要です。
[サービス]-[ストレージ]から[Storage Gateway]を選択します。
ストレージゲートウェイのファーストページが表示されますので、[今すぐ開始する]をクリックします。
この画面が出ない場合は[ゲートウェイの作成]をクリックします。
ファイルゲートウェイを作成します。
ゲートウェイの種類で[ファイルゲートウェイ]を選択します。
ホストプラットフォームの選択で[Amazon EC2]を選択し、[インスタンスの起動]をクリックします。
通常のインスタンス作成と同様の画面に遷移します。
ストレージゲートウェイを作成する場合は、インスタンスファミリーはm3,m4,i2,d2,c3,c4,r3のいずれでもかまいませんが、インスタンスタイプは xlarge 以上である必要があります。
ストレージの追加
80GBのrootボリュームの他に、キャッシュ用のEBSを追加します。
ファイルゲートウェイの場合は、最小150GiB最大16TiBの領域を追加してください。
キャッシュ領域はデータ読み出しの際に利用される領域です。サイズが大きければより多くのデータをキャッシュできるため、ファイルゲートウェイからのデータ読み出し性能が向上します。
SecurityGroup設定
SecurityGroupのインバウンド設定は次の通りになります。
タイプ | プロトコル | ポート範囲 | 送信元 | 用途 |
HTTP | TCP | 80 | MyIP | Gatewayのアクティベートを行う際に必要 |
カスタムTCPルール | TCP | 2049 | NFS Clients | NFAクライアントが利用 |
カスタムUDPルール | UDP | 2049 | NFS Clients | |
カスタムTCPルール | TCP | 111 | ローカルシステム | ローカルシステムがポートマッパーにアクセスする際に利用 |
カスタムUDPルール | UDP | 111 | ローカルシステム | |
カスタムTCPルール | TCP | 20048 | ローカルシステム | ローカルシステムがmountdをアクセスする際に利用 |
カスタムUDPルール | UDP | 20048 | ローカルシステム |
インスタンスの作成が終わったら、アクティベーションを行います。
ファイルゲートウェイのアクティベーション
インスタンスの起動が完了したら[次へ]をクリックして、アクティベーションを実施します。
ゲートウェイに接続
インスタンスのPublicIPを入力し[ゲートウェイに接続]をクリックします。
この際ブラウザがストレージゲートウェイの80ポートにアクセスしますのでSecurityGroup設定には、アクティベーション作業を行うブラウザが動作する端末の外部IPを登録しておいてください。
ゲートウェイのアクティブ化
[ゲートウェイのタイムゾーン]
[ゲートウェイ名]を入力し、[ゲートウェイのアクティブ化]をクリックします。
アクティブ化を行うと、ローカルディスク(EBS)の認識が行われます。
rootディスクではないEBSが認識されます。ファイルゲートウェイの場合は、ディスクはファイルキャッシュとしてしか利用されませんので、[割り当て済み]がキャッシュとなっている事を確認して[保存して続行]をクリックします。
ゲートウェイのステータスが[実行中]となれば、ストレージゲートウェイの作成は完了です。
続いて、ファイル領域としてS3の設定を行います。
あらかじめ、S3バケットを作成しておいてください。
ファイル共有の作成
[ファイル共有]からファイルゲートウェイとS3バケットを関連付けます。
[ファイル共有]-[ファイル共有の作成]をクリックします。
あらかじめ作成しておいたS3バケット名を[Amazon S3バケット名]に入力し[次へ]をクリックします。
構成情報を確認し、[ファイル共有の作成]をクリックします。
ファイル共有を作成するとステータスが[作成中]となります。
ファイル共有のステータスが[利用可能]となれば、ファイルゲートウェイの設定は完了です。
ファイル共有が作成できたら、当該の[ファイル共有]を選択して[詳細]を見てみましょう。
接続するためのコマンドラインが表示されます。
ファイルゲートウェイの利用
今回はWindowsServer2012R2からの利用してみます。
まずはじめに、サーバーの役割追加から、NFSクライアントをインストールします。
コマンドプロンプトを[管理者として実行]し、先ほど[ファイル共有]で確認したコマンドを実行します。
コマンドで指定したドライブレターで、ネットワークドライブがマウントされました。
マウントしたドライブに実際にファイルとフォルダを作成してみます。
ファイルもフォルダもそのまま作成されました。
ただし、残念ながら日本語(CP932)のファイル名は文字化けしてしまいました。
これは、通常のLinux系NFSとWindowsクライアントを利用した場合と同様の問題です。
まとめ
ファイルゲートウェイを利用することで、サードパーティーツールやS3コマンドを利用せずに、OSのNFSマウントコマンドでファイルをS3にアップロードすることが出来るようになりました。
なお、ファイルゲートウェイにファイルを置いてから、実際にS3にファイルが置かれるまでは1分程度のタイムラグがあるようです。
ただし、ファイルゲートウェイに保存したファイルはそのままS3に反映されますが、S3バケットに直接ファイルを保存してもファイルゲートウェイには反映されませんでした。
あくまでも、NFSに置いたファイルがそのままS3に反映されるツールという位置づけになるようです。
※2018/07/18追記:明示的に「キャッシュを更新」操作を行うことで、S3バケットに追加したファイルをファイルゲートウェイに反映することが可能です。
Amazon S3 バケット内のオブジェクトを更新する
NFSとS3が連携することで、容量無制限のファイルサーバがより簡単に実現できそうですね。
ストレージゲートウェイの構築手順、必要ポート一覧などは公式ドキュメントにも記載がありますので、合わせて御確認ください。
なお、バックエンドのS3は容量制限はありませんが、IOスピードは速くありません。
このため、キャッシュ容量を超えたファイルのIOについてのパフォーマンスは期待できません。
利用する際は、キャッシュオーバーの際のファイルIO速度なども考慮した上で、利用用途とパフォーマンスの検証を行って下さい。
主な利用用途としてはNFSプロトコルで、配置したデータをS3上でそのまま利用し、LambdaやAthenaなどのAWSサービスと連携するためのゲートウェイと捉えてください。