AWS Storage Gatewayのファイルゲートウェイを使ってローカルPCからS3へファイル転送する


AWS Storage Gatewayはオンプレ環境とクラウドストレージを接続して、オンプレ環境からクラウドストレージへアクセスできるようにするサービスです。

今回、オンプレ環境に保存していたバックアップファイルをクラウド移行したいという相談があったため、ローカルPCからS3へファイル転送する手順を検証してみました。

※本検証によりAWS利用料が発生する可能性がありますのでご注意ください

接続先のS3バケットを作成する

S3へアクセスし、「バケットを作成する」をクリックします

「バケット名」を入力して「次へ」をクリックします。

そのまま「次へ」をクリックします。

バケットをパブリックに公開する必要は無いのでそのまま「次へ」をクリックします。

「バケットを作成」をクリックします。

Storage Gatewayの設定

はじめてStorage Gatewayを利用する場合はこちらをクリックします

ゲートウェイの作成

ゲートウェイの種類を選択

今回は「ファイルゲートウェイ」を利用します。

EC2インスタンスの起動

Storage Gatewayをホストするプラットフォームを選択します。
今回はEC2インスタンスを利用するので、「インスタンスの起動」をクリックしてください。

Storage Gatewayのホストには「m4.xlarge以上」のスペックが推奨とされているため、「m4.xlarge」を選択します。

インスタンスの詳細を設定します。
VPCは今回使うものを選択、自動割り当てパブリックIPは今回ローカルPCから接続するので有効にしておきます。

ストレージを追加します。Storage Gatewayのホストはファイルをキャッシュする際にルートボリューム以外のボリュームが必要です。
推奨は150GB以上ですが、今回は検証なので8GBとしました。

タグの追加では一応Nameタグを追加しておきます。

セキュリティグループを設定します。以下画面のようにインバウンドを許可する必要があります。
ソースはマイIPを設定して、他ネットワークからアクセスできないようにしておきました。

以上で起動設定は完了なので、「起動」をクリックします。

インスタンスが起動したらStorage Gatewayの「ホストプラットフォームの選択」画面に戻って、「次へ」をクリックしましょう。

ゲートウェイに接続

先ほど起動したEC2インスタンスのパブリックIPアドレスを入力して、「ゲートウェイに接続」をクリックします。
※EC2インスタンスが起動していない場合、起動まで待たされることがあります。

ゲートウェイのアクティブ化

ゲートウェイのタイムゾーンを選択、ゲートウェイ名を入力し、「ゲートウェイのアクティブ化」をクリックします。

ローカルディスクの構成

EC2インスタンスのディスクが表示されるので、「割り当て済み」を「キャッシュ」として、「ログ記録を設定」をクリックします。

ログ記録を設定

何も変更せず、「保存して続行」をクリックします。

以上でゲートウェイの作成は完了です。

ファイル共有の作成

Storage Gatewayのゲートウェイ一覧画面にて、先ほど作成したゲートウェイを選択し、「ファイル共有の作成」をクリックします。

格納先とするS3バケット名を入力、アクセス方法は「NFS」を選択して「次へ」をクリックします。

そのまま、「次へ」をクリックします。

そのまま、「次へ」をクリックします。

一覧画面に戻ると、nfsマウントするためのコマンドが記載されているのでコピーしましょう。
ただし、IPアドレスはEC2インスタンスのパブリックIPに置き換える必要があります。

動作確認

ローカルPCからNFSマウント

今回はローカルPCのOSがmacOSだったので以下のようなコマンドを入力しました。

$ mkdir storage
$ mount_nfs -o vers=3,nolock,hard -v (EC2パブリックIP):/(S3バケット名) storage

テストファイルを格納

試しにファイルを作成してみます。

$ touch storage/test.txt

少し(1分ほど)待ってから、S3バケットの中身を確認すると、ファイルが生成されていました。

参考

以下記事を参考とさせていただきました。

[Storage Gateway] EC2からS3バケットをNFSマウントしてみた〜2018年冬〜
ファイルゲートウェイで簡単ファイルサーバ