Amazon S3はものすごい優秀なサービスです。
耐久性(データが壊れない確率)は99.999999999%だから、ほぼ壊れない。
さらにどんなにファイルを保管を入れてもあふれることはない、容量無制限のストレージです。
そんな優秀なS3にも弱点があります。
それは、PC端末に直接接続できないこと。
たまに、「S3は直接接続できるっしょ!?」と勘違いされている方もいらっしゃいますが、基本的にS3は直接接続には対応しておりません。
AWS CLI等を使ってHTTPプロトコルにてデータの出し入れを行うことができますが、
PC端末とは直接つなげられませんので、ローカルストレージにようにファイルを簡単に出し入れすることはできないんです。
ただし・・・!!
Storage Gatewayを利用すればこの問題は解決されます。
S3をNASのように使うことが可能になるんです!!
S3なので容量無制限、かつデータの耐久性は99.999999999%!!
ほぼ壊れません!!
データのバックアップ先としては最適ですよね?
今回はStorage Gatewayを使ってMacから直接S3へ接続し、ファイルを出し入れする方法をご紹介したいと思います。
Storage Gatewayとは
まず、Storage Gatewayとは何ぞや?
というお話をさせていただきます。
Storage Gatewayとは、クラウド上ではなく、自社で管理・運用している(オンプレミスな)情報システムと、S3等のAWSストレージサービスとをセキュアに、そしてシームレスにつなげることができるAWSサービスです。
ちょっと難しいですね。
簡単にいうと、Storage GatewayはS3を直接接続できるようにしてくれる橋渡し的なもの、ということです。
Storage Gatewayを利用してMacからS3へ接続する仕組み
Storage Gatewayを利用するには、Storage GatewayのホストとなるVMwareやEC2が必要です。
今回はEC2を新規作成してStorage Gatewayのホスト(ゲートウェイと言います)にする前提でお話を進めます。
本記事の方法によってS3とMacがどのようにデータをやり取りするのか、データのやり取りの概要を以下に記載します。
Storage GatewayはS3バケットからのファイルの出し入れを担います。
▽
Storage Gatewayはゲートウェイとセキュアに、かつシームレスにファイル送受信が行われます。
▽
ゲートウェイをネットワークドライブとしてMacに接続しファイルの出し入れを行います。
すると、あら不思議!
Macから、さもローカルディスクのようにS3にダイレクトにファイルの出し入れすることができます。
上記の内容を図に表すとこんな感じです。
Storage Gatewayを利用してMacからS3へ接続する際の料金
大きく分けて以下4つの料金がかかります。
- EC2利用料
- EBS利用料
- S3の保管料
- データ通信料・リクエスト料(Storage Gateway利用料含む)
それぞれご説明いたします。
上記でも述べたように、Storage Gatewayを使用するためには、ゲートウェイとなるEC2が必要です。
もちろんのことですが、そのEC2の利用料金がかかります。
ちなみにEC2で利用できるサイズは、xlargeサイズ以上となります。
詳細な要件についてはこちらをご確認ください。
また、EC2へアタッチするEBS使用料、および実際の保管先となるS3の保管料が必要となります。
※EBSで必要となるのは最低でも230GBとなります。
そして最後に以下のようなデータ通信にかかる料金が必要となります。
※以下は東京リージョンの価格となります。
<S3バケットへのアップロード>
- Storage GatewayからS3バケットへの料金:1.15円(0.01ドル)/GB(Storage Gatewayのデータ書込リクエスト料として)
<S3バケットからのダウンロード>
- S3からStorage Gatewayへの料金:0.043円(0.00037ドル)/1,000リクエストあたり(GETリクエスト料として)
- Storage GatewayからEC2への料金:0円(Storage GatewayとEC2が同リージョンの場合)
- EC2からMacへの料金
1GBまで:0円
〜10TBまで:13.11円(0.114ドル)/GB
〜50TBまで:10.24円(0.089ドル)/GB
〜150TBまで:9.89円(0.086ドル)/GB
〜150TB以降:9.66円(0.084ドル)/GB
※上記のご説明は2018.11.22時点の情報をもとに記載しており、1ドル=115円で換算したものとなります。
※詳しい料金は次のページにてご確認ください
S3の料金、StorageGatewayの料金、EC2の料金、EBSの料金
設定方法
それではStorage Gatewayを利用してS3をMacにNFS接続するまでをご説明します。
ゲートウェイとなるEC2インスタンスの作成
(1)Storage Gatewayコンソール画面を開きます
(2)[今すぐはじめる]をクリックします
(3)”ファイルゲートウェイ”を選択して[次へ]をクリックします
(4)[インスタンスの起動]をクリックします
(5)”m5.xlarge”を選択して[次の手順:インスタンスの詳細の設定]をクリックします
(6)特に変更せず、[次の手順:ストレージの追加]をクリックします
(7)特に変更せず、[次の手順:タグの追加]をクリックします
(8)特に変更せず、[次の手順:キュリティグループの設定]をクリックします
(9)ここからが変更作業が必要となります。”新しいセキュリティグループを作成する”を選択し、
インバウンドに以下のルールの追加を行なってください。
マイIPを選択するとIPアドレスが表示されますのでメモしておきましょう。
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
HTTP | TCP | 80 | マイIP |
カスタムTCP | TCP | 2049 | マイIP |
カスタムUDP | UDP | 2049 | マイIP |
カスタムTCP | TCP | 111 | マイIP |
カスタムUDP | UDP | 111 | マイIP |
カスタムTCP | TCP | 20048 | マイIP |
カスタムUDP | UDP | 20048 | マイIP |
(10)[確認と作成]をクリックします
(11)[作成]をクリックします
(12)キーペアを選択し、[インスタンスの作成]をクリックします
(13)インスタンス一覧で”IPv4 パブリック IP”をメモしておきます
これでゲートウェイとなるEC2の作成は完了です。
Storage Gatewayコンソール画面から”インスタンスの起動”をすることで、専用のAMIが選択された状態でEC2の作成がはじまります。
専用のAMIを使わず、単純にEC2を立てるだけではゲートウェイとして利用できませんのでご注意ください。
また、セキュリティグループの設定も重要です。
マイIPを選択することによって、現在のグローバルIPが自動入力されますが、
実際にNFS接続する時に今のグローバルIPとは異なる場合、マイIPではなくその異なる方のIPを指定しなくてはなりません。
※HTTPだけは下記の”ゲートウェイのアクティブ化”時に使用するだけのものとなりますので、マイIPのままで問題ありません。
キャッシュ用EBSを新規作成してアタッチする
作成したEC2には既に80GBのEBSがルートボリュームとして利用されておりますが、
ファイルゲートウェイとして利用する場合、キャッシュ用としてさらにEBSストレージが必要となります。
※最小でも150GBのEBSが推奨されています。
新規EBSを作成し、ゲートウェイ用EC2にアタッチするまでをご説明します。
(1)EC2コンソールの左メニューから[ボリューム]を選択し、[ボリュームの作成]をクリックします
(2)サイズを150と入力、アベイラビリティゾーンをゲートウェイ用EC2と同じアベイラビリティゾーンに合わせて[ボリュームの作成]をクリックします
(3)作成したボリュームを選択し、[アクション]→[ボリュームのアタッチ]をクリックします
(4)インスタンス欄にはゲートウェイ用EC2のインスタンスIDを設定し、[アタッチ]をクリックします
※デバイス欄は自動入力されますので気にしないで大丈夫です
ボリュームの状態が”in-use”に変わったらアタッチ完了です。
作成したEC2を使ってゲートウェイを作成する
(1)Storage Gatewayコンソール画面を開きます
(2)[今すぐはじめる]をクリックします
(3)”ファイルゲートウェイ”を選択して[次へ]をクリックします
(4)”Amazon EC2″を選択して[次へ]をクリックします
(5)EC2インスタンスの作成時にメモした”IPv4 パブリック IP”を”IPアドレス”欄へ入力し、[ゲートウェイに接続]をクリックします
(6)”ゲートウェイのタイムゾーン”と”ゲートウェイ名”を入力し、[ゲートウェイのアクティブ化]をクリックします
(7)少しすると”ローカルディスクを準備中”から、さきほどアタッチしたストレージが表示されます。
[保存して続行]をクリックします。
これでゲートウェイが完成しました。
S3バケットを新規作成する
S3バケットは基本的にはデフォルト作成のままで問題ありません。
ただし、S3バケットのリージョンはゲートウェイやStorage Gatewayと合わせた方がベストです。
でないと転送料金が多くかかってしまうといった問題が発生します。
S3バケットが作成完了しましたらバケット名をメモしておきましょう。
Strorage Gatewayを作成する
(1)Storage Gatewayコンソール画面から[ファイル共有の作成]をクリックします
(2)”Amazon S3バケット名”に、メモしたS3バケット名を入力、”ネットワークファイルシステム (NFS)”を選択し、”ゲートウェイ”にさきほど作成したゲートウェイが表示されていることを確認して[次へ]をクリックします
(3)特に変更せず、[次へ]をクリックします
※S3へ保存するものがバックアップ目的で、かつ頻繁に取り出さない場合は”新しいオブジェクトのストレージクラス”を”スタンダードIA”や”1ゾーンIA”へ変更するとコストメリットが高くなります。
詳細は次の記事をお読みくださいませ。
コスト削減 ストレージクラス分けでS3のコストを徹底的にしぼる!
(4)”許可されたクライアント”の[編集]をクリックして、先ほどEC2作成時にメモした”マイIP”に変更しておきます
(5)[ファイル共有の作成]をクリックします
作成したファイル共有のステータスが”利用可能”になったら完了です。
MacからゲートウェイにNFS接続してマウントする
長い道のりでしたね。
あとはMacの設定をすれば完了です。
(1)マウント先となるディレクトリを作成する
(2)ターミナルで次のコマンドを実行する
※Storage Gatewayコンソールに表示されているコマンド例にはプライベートIPが使われております。
本記事のようにEC2を作成し、それをゲートウェイとする場合、プライベートIPではなく、パブリックIPとしなければなりませんのでご注意ください。
1 |
mount_nfs -o vers=3,nolock,hard -v [ゲートウェイのパブリックIP]:/[S3バケット名] [(1)で作成したディレクトリパス] |
(例)
マウント先ディレクトリ:デスクトップ上の”test-dir”
ゲートウェイのパブリックIP:35.153.156.105
S3バケット名:s3-nas-hidesan-test
上記のパラメータの場合、ターミナルを開き、カレントディレクトリをデスクトップにした上で次のコマンドとなります。
1 |
mount_nfs -o vers=3,nolock,hard -v 35.153.156.105:/s3-nas-hidesan-test test-dir |
少し時間をおくと、マウント設定したディレクトリが以下のようなアイコンに変わります。
このディレクトリにファイルを置くと、指定のS3バケットにファイルが格納されていることが確認できるかと思います。
いかがでしたでしょうか?
xlarge以上のEC2インスタンスを使わないとならないであるとか、EBSを合計で230GB以上使うとか、
正直なところコスト的にはお高くなる要素が多々あるかと思います。
また、インターネット回線が固定IPとなっていない場合は、常時Storage Gatewayの設定を見直す必要があるというのも弱点です。
(このような場合は、NFSのファイルゲートウェイではなく、SMBのファイルゲートウェイを利用することで問題が解消できるかと思います。
SMBのファイルゲートウェイの作り方は後日また記事にしたいと思います。)
ですが、その壁が超えられるのであれば容量無制限、かつデータがほぼ壊れないNASが手に入ります!!
ぜひご検討いただければと思います。
長い記事となりましたが、ここまでお読みいただきありがとうございました。
hidesanでした!!