S3をネットワークドライブのようにWindows PCにマウントして使いたいと思ったことはないでしょうか。
マウントすることで、例えばZドライブなどとしてエクスプローラーから開くことができます。
AWSコンソールに接続する手間がなくなり、ローカルファイルのようにS3のファイルを操作できます。
S3をPCにマウントするためにはStorage Gatewayと組み合わせて使用します。
今回は「S3 + StorageGateway」構成の「メリット・デメリット」、「Storage Gatewayの構築方法」、「Windows PCからの接続方法」を紹介します。
S3 + Storage Gatewayを使用するメリット・デメリット
通常のS3のみの使用と比較して、Storage Gatewayを使用するメリットとデメリットを説明します。
メリット
S3 + Storage Gatewayの構成は、単一のS3で使用する場合と比べて大きく2つのメリットがあります。
メリットはズバリ、「ローカルファイルのように操作できる」という操作性の良さです。
これを手に入れるためにStorage Gatewayを利用することになります。
メリットになるかは時と場合によりますが、AWSの認証でS3にアクセスするのではなくアクティブディレクトリの認証を利用してS3にアクセスできるようになります。
そのため余計なAWSカウントの発行を抑えることができます。
また、Guestアカウントの認証もできるので、普段アクティブディレクトリを使用していない場合でもAWSアカウントの発行を抑えることができます。
デメリット
S3 + Storage Gatewayの構成は、単一のS3で使用する場合と比べてデメリットも出てきてしまいます。
Storage Gatewayは追加でサーバーを用意することになりますので、サーバー費用がプラスしてかかってきます。
例えば、EC2で用意する場合だと半日はサーバーを止める(1日12時間稼働)としても約7200円/月の費用が掛かってしまいます。
EC2インスタンス費用:2634円/月
⇒m4.xlarge以上のスペックが推奨
⇒ $0.0665/時間(m4.xlarge) × 12(時間) × 30(日) × 110円(1ドルあたり) = 2634円/月
EBS費用:4,554円/月
⇒m4.xlarge標準ストレージ80GBとあわせ、150GBのキャッシュ用ストレージを追加
⇒ $0.18/月(1GBあたり) × 230(GB)× 110円(1ドルあたり)= 4,554円/月
S3は99.999999999%(イレブンナイン) の堅牢性と、99.99% の可用性を持つとされています。また、S3のデータは2拠点以上で冗長化されているので高い耐久性があるといえます。
しかし、Storage Gatewayを単一サーバーにすると耐久性が低くなり、本来のS3の可用性を活かしきれない可能性があります。
データの保存性に関してはかなり強固なままですが、可用性はStorage Gatewayに依存する形になってしまいます。
S3 + Storage GatewayとGoogle Driveの比較
突然ですが、Google Driveは使っているでしょうか。
Google Driveは操作性もよいし、「パソコン版Google ドライブ」を使用することでマウントできるので、
S3を頑張ってマウントできるようにしなくてもGoogle Driveでいいんじゃないかと思うわけです。
そこで、Google Driveと比較していかに「便利に」「安く」「セキュアに」使用できるか考察します。
結論から言えば重要な個人情報や会社の機密ファイルなどない個人利用であればGoogle Driveの方が安くてお手軽と言えます。
Storage Gatewayの記事ではありますが、個人利用であれば圧倒的にGoogle Drive(Google One)がいいです。
Google DriveもPCにマウントできる
Google Driveも「パソコン版 Googleドライブ」を使用することでGドライブとしてマウントして、ローカルのようにファイル操作することができます。
マウントの手順もインストールするだけなので簡単なのでストレスなく始められるのがよいです。
Google Driveは耐久性も高い
Google Drive自体も99.9%のSLAがありますので、個人利用であれば全く問題ないと思います。
Google Drive + パソコン版Googleドライブは圧倒的に安い
また、「Google Drive + パソコン版Googleドライブ」と「S3 + Storage Gateway」を比較すると、コストでは圧倒的にGoogle Driveの方が安くなります。
パソコン版Googleドライブは無料なのに対して、Storage Gatewayはどうしてもサーバー代がかかってしまうためです。
また、Google Drive単体とS3単体を比較してもGoogle Driveの方がコストメリットがあるシーンが多そうです。
詳しくは以下の記事をご覧ください。
クラウドストレージ(Google Drive・Dropbox・AWS S3)の比較と考察
Google Drive・Dropbox・AWS S3のコストを比較しています。興味があればぜひご覧ください。
Google Driveのマウントは安定性も高い
マウントしているネットワークドライブは安定性が低いとネットワークが切断されたり、再ログインを求められたり煩わしいものです。
「S3 + StorageGateway」を使ってみて、推奨スペックで利用ユーザー数も少ないのにたまにマウントが外れたりネットワークドライブが使用不可になっていたりして多少はストレスがあります。
(エクスプローラーを開き直すと繋がったりするんですが。。)
対して「Google Drive + パソコン版Googleドライブ」はメールの保存先などかなりハードな使い方をしていてもマウントが外れるなどといったことは今のことろありません。
Google Driveを利用してクラウドメールのようなことができてしまうくらいです。(また記事にする予定です。)
上記では「Google Drive + パソコン版Googleドライブ」のメリットについて紹介してきましたが、
「S3 + StorageGateway」を利用したい場面はあります。
それは「機密性」が高い情報を扱うときです。なぜ「S3 + StorageGateway」の方がセキュアにできるか説明していきます。
データポリシーではGoogle DriveよりAWS S3の方が安心
Googleのデータポリシーより、AWSのデータポリシーの方が安心して利用できます。
なぜなら、Googleは利用者の許可なくコンテンツを審査するとデータポリシーで宣言しているためです。
Google は、コンテンツが違法か否か、または Google のプログラム ポリシーに違反しているか否かを判断するために、コンテンツを審査することができます。
プログラム ポリシー
一方AWSは利用者の許可なくコンテンツにアクセスすることはないと宣言しています。
いかなる目的であっても、AWS はお客様の同意を得ることなく、お客様のコンテンツにアクセスしたり、それを使用したりすることはありません。
AWS データプライバシー
インターネットアクセス不可能な論理的プライベート空間を利用できる
さらにAWSはVPCを利用してプライベート空間を構築したり、アクセス元を特定のIPアドレスに限定するといったことができます。
これにより、「会社のIPアドレスからでしかアクセスできないネットワークドライブを構築」できたり「踏み台サーバーやVPNサーバーを経由しないとアクセスできないネットワークドライブを構築」できるわけです。
このようにアーキテクチャ的にセキュアにできる点が「S3 + StorageGateway」の非常に魅力的な部分です。
Storage Gatewayの構築手順
ここまで「S3 + Storage Gateway」のメリデメについて紹介しましたが、企業ユースであればクラウドの仮想プライベート空間にネットワークドライブを構築するという場面は出てきます。
そこで、Storage Gatewayの構築手順を紹介します。
ここではStorage GatewayサーバーとしてEC2インスタンスを用意する方法になります。
EC2インスタンスは推奨スペックが最小でもm4.xlargeに追加のキャッシュ用ストレージ150GBとなります。
AWSのデフォルトVPCにStorage Gatewayを構築する場合
プライベートVPCを利用しない場合は、非常に簡単にStorage Gatewayを構築することができます。
まずは、クライアントPCからインタネット経由でデフォルトのVPCにあるStorage Gatewayにアクセスするような場合の構築手順を紹介します。
Storage Gatewayの構築手順
まずはStorage Gatewayコンソール画面で「ゲートウェイ」から「ゲートウェイの作成」をクリックします。

(クリックすると画像が拡大されます。)
「Amazon S3 ファイルゲートウェイ」を選択し「次へ」をクリックします。

(クリックすると画像が拡大されます。)
プラットフォームは「Amazon EC2」を選択し、「インスタンスの起動」ボタンをクリックします。

(クリックすると画像が拡大されます。)
EC2の作成画面になるので、EC2に関わる設定を進めていきます。
AMIはLinuxベースでもWindowsベースでも構いません。
「2. インスタンスタイプの選択」ではm4.xlarge以上のスペックを選択します。

(クリックすると画像が拡大されます。)
「3. インスタンスの設定」では「ネットワークがデフォルトVPCであること」、「パブリックIPが有効であること」を確認します。

(クリックすると画像が拡大されます。)
「4. ストレージの追加」では「ボリュームの追加」ボタンをクリックしキャッシュ用のストレージを追加します。
キャッシュ用ストレージは「150」GiBとし終了時に削除にチェックを入れておきます。

(クリックすると画像が拡大されます。)
「5.タグの追加」では「キーをNameとして値に任意のインスタンス名を入力」しておきます。

(クリックすると画像が拡大されます。)
「6. セキュリティグループの設定」では「新しいセキュリティグループを作成する」を選択し以下のルールを設定します。
- タイプ:SMB、ソース:0.0.0.0/0(もしくは接続元IP)
- タイプ:カスタムTCP、ポート:80、ソース:0.0.0.0/0(もしくは接続元IP)

(クリックすると画像が拡大されます。)
インスタンスが起動したら、Storage Gateway作成画面に戻り「次へ」をクリックします。

(クリックすると画像が拡大されます。)
サービスのエンドポイントは「パブリック」を選択し「次へ」をクリックします。

(クリックすると画像が拡大されます。)
ゲートウェイに接続では「IPアドレス」を選択し作成したStorage GatewayのEC2のパブリックIPアドレスを入力し「次へ」をクリックします。

(クリックすると画像が拡大されます。)
ゲートウェイのアクティブ化では「タイムゾーン」と選択し「ゲートウェイ名」を入力して「ゲートウェイのアクティブ化」をクリックします。

(クリックすると画像が拡大されます。)
ローカルディスクの構成ではEC2インスタンスを作成するときに追加した150GiBのストレージが表示されているので「保存して続行」をクリックします。

(クリックすると画像が拡大されます。)
ログの記録ではログを出力するか否か適宜選択し「保存して続行」をクリックします。

(クリックすると画像が拡大されます。)
割愛しますが、「ステップ8 確認と終了」ではこれまで設定した内容の確認なので問題なければ終了させてください。
作成したゲートウェイのステータスが「オフライン」から「実行中」になれば作成完了です。

(クリックすると画像が拡大されます。)
ファイル共有の作成
Storage Gatewayを作成後、「ファイル共有」を作成しないとPCから接続することができません。
そのため以下の手順でファイル共有の作成を進めていきます。
Storage Gatewayコンソール画面の「ファイル共有」から「ファイル共有の作成」をクリックします。

(クリックすると画像が拡大されます。)
ファイル共有の設定では「先ほど作成したゲートウェイを選択」し接続したいS3の「バケット名」を入力します。
Windows PCからつなぐ場合はSMBを選択すればよいかと思います。(NFSでも可)
選択したら「次へ」をクリックします。

(クリックすると画像が拡大されます。)
S3ストレージ構成では特に変更せず「次へ」でよいです。

(クリックすると画像が拡大されます。)
ファイルアクセス設定では接続方法を「ゲストアクセス」とし「ゲストパスワード」を入力しておきます。(マウントする際にこのパスワードを使用します。)
入力したら「次へ」をクリックします。

(クリックすると画像が拡大されます。)
割愛しますが、「ステップ4 確認と作成」ではこれまで設定した内容の確認なので問題なければ作成させてください。
作成したファイル共有のステータスが「利用可能」になれば作成完了です。
ファイル共有のリンクをクリックすると、「コマンド例」が出てきますが、こちらのコマンドを実行すればWindows PCから接続することができます。([WindowsDriveLettert]はZなど任意の文字に変えてください。ZにするとZドライブとしてマウントされます。)
コマンドでうまく入力できなければWindows10でのGUI操作でマウントする方法を後述しているので参考にしてください。

(クリックすると画像が拡大されます。)
プライベートVPC空間にStorage Gatewayを構築する場合
「S3 + Storage Gateway」をセキュアに使うためにはVPCを使ったプライベート空間での利用がオススメです。
ここではプライベートVPCを利用する場合のアーキテクチャと構築手順を紹介します。
アーキテクチャ
今回構築するアーキテクチャは以下のようなものとします。
パブリックサブネットとプライベートサブネットを構築し、パブリックサブネットにあるVPNサーバーを経由してStorage Gatewayサーバーにアクセスするものとします。

(クリックすると画像が拡大されます。)
より詳細な構造は以下のようになります。

(クリックすると画像が拡大されます。)
VPCとVPNサーバーの構築手順
まずはStorage Gatewayを構築する前にVPC空間とVPNサーバーを作成しておく必要がありますが、こちらは以下の記事で解説しているので今回は割愛します。
Storage GatewayおよびVPCエンドポイントの構築手順
Storage Gatewayを構築しながらStorage Gateway用のVPCエンドポイントも構築していきます。
まずはStorage Gatewayコンソール画面で「ゲートウェイ」から「ゲートウェイの作成」をクリックします。

(クリックすると画像が拡大されます。)
「Amazon S3 ファイルゲートウェイ」を選択し「次へ」をクリックします。

(クリックすると画像が拡大されます。)
プラットフォームは「Amazon EC2」を選択し、「インスタンスの起動」ボタンをクリックします。

(クリックすると画像が拡大されます。)
EC2の作成画面になるので、EC2に関わる設定を進めていきます。
AMIはLinuxベースでもWindowsベースでも構いません。
「2. インスタンスタイプの選択」ではm4.xlarge以上のスペックを選択します。

(クリックすると画像が拡大されます。)
「3. インスタンスの設定」ではあらかじめ作成したプライベートVPCとプライベートサブネットを選択します。
自動割り当てパブリックIPは「無効」とします。

(クリックすると画像が拡大されます。)
「4. ストレージの追加」では「ボリュームの追加」ボタンをクリックしキャッシュ用のストレージを追加します。
キャッシュ用ストレージは「150」GiBとし終了時に削除にチェックを入れておきます。

(クリックすると画像が拡大されます。)
「5.タグの追加」では「キーをNameとして値に任意のインスタンス名を入力」しておきます。

(クリックすると画像が拡大されます。)
「6. セキュリティグループの設定」では「新しいセキュリティグループを作成する」を選択し以下のルールを設定します。
- タイプ:SMB、ソース:192.168.11.0/24(パブリックサブネットのCIDR)
- タイプ:カスタムTCP、ポート:80、ソース:192.168.11.0/24(パブリックサブネットのCIDR)
- タイプ:カスタムTCP、ポート:80、ソース:192.168.12.0/24(プライベートサブネットのCIDR)
パブリックサブネットのCIDR部分はVPNサーバーのセキュリティグループなどでもよいです。

(クリックすると画像が拡大されます。)
インスタンスを作成したら、Storage Gateway作成画面に戻り「次へ」をクリックします。

(クリックすると画像が拡大されます。)
「VPC」を選択し「Amazon VPCエンドポイント」をクリックしVPCエンドポイントの作成を開始します。

(クリックすると画像が拡大されます。)
VPCコンソール画面が表示されるので、「エンドポイントの作成」をクリックします。

(クリックすると画像が拡大されます。)
エンドポイントの作成画面では、「AWSサービス」を選択し、検索窓に「storagegateway」と入力し、出てきたサービスを選択します。
VPCはプライベートVPCを選択し、サブネットはプライベートサブネットを選択します。
「プライベートDNS名を有効にする」チェックは外すようにしてください。
「新規セキュリティグループ」の作成をクリックしVPCエンドポイント用のセキュリティグループの作成を開始します。

(クリックすると画像が拡大されます。)
VPCエンドポイントのセキュリティグループの「名前」と「説明」を入力し、VPCを選択したら以下4つのルールを加えます。
- タイプ:カスタムTCP、ポート:443、ソース:0.0.0.0/0
- タイプ:カスタムTCP、ポート:1026-1028、ソース:0.0.0.0/0
- タイプ:カスタムTCP、ポート:1031、ソース:0.0.0.0/0
- タイプ:カスタムTCP、ポート:2222、ソース:0.0.0.0/0

(クリックすると画像が拡大されます。)
VPCエンドポイント用のセキュリティグループを作成したら、エンドポイントの作成画面に戻ってきて作成したセキュリティグループを選択し「エンドポイントの作成」ボタンをクリックします。

(クリックすると画像が拡大されます。)
作成したエンドポイントのステータスが「保留中」から「使用可能」に変わったことを確認して念のため、作成したエンドポイントのIDを覚えておきます。

(クリックすると画像が拡大されます。)
ゲートウェイの作成画面に戻ってきて「VPCエンドポイントID」を選択し、作成したエンドポイントのIDを選択します。リストが最新化されてない場合は矢印マークで更新します。
選択したら「次へ」をクリックします。

(クリックすると画像が拡大されます。)
ゲートウェイに接続では「IPアドレス」を選択しStorage GatewayのEC2のプライベートIPアドレスを入力し「次へ」をクリックします。

(クリックすると画像が拡大されます。)
ここで、VPNサーバーにPCを繋いでおいてください。アクティブ化するときVPN経由での接続が発生します。
ゲートウェイのアクティブ化では「タイムゾーン」と選択し「ゲートウェイ名」を入力して「ゲートウェイのアクティブ化」をクリックします。

(クリックすると画像が拡大されます。)
ローカルディスクの構成ではEC2インスタンスを作成するときに追加した150GiBのストレージが表示されているので「保存して続行」をクリックします。

(クリックすると画像が拡大されます。)
ログの記録ではログを出力するか否か適宜選択し「保存して続行」をクリックします。

(クリックすると画像が拡大されます。)
割愛しますが、「ステップ8 確認と終了」ではこれまで設定した内容の確認なので問題なければ終了させてください。
作成したゲートウェイのステータスが「オフライン」から「実行中」になれば作成完了です。

(クリックすると画像が拡大されます。)
ファイル共有の作成
Storage Gatewayを作成後、「ファイル共有」を作成しないとPCから接続することができません。
そのため以下の手順でファイル共有の作成を進めていきます。
Storage Gatewayコンソール画面の「ファイル共有」から「ファイル共有の作成」をクリックします。

(クリックすると画像が拡大されます。)
ファイル共有の設定では「先ほど作成したゲートウェイを選択」し接続したいS3の「バケット名」を入力します。
Windows PCからつなぐ場合はSMBを選択すればよいかと思います。(NFSでも可)
選択したら「次へ」をクリックします。

(クリックすると画像が拡大されます。)
S3ストレージ構成では特に変更せず「次へ」でよいです。

(クリックすると画像が拡大されます。)
ファイルアクセス設定では接続方法を「ゲストアクセス」とし「ゲストパスワード」を入力しておきます。(マウントする際にこのパスワードを使用します。)
入力したら「次へ」をクリックします。

(クリックすると画像が拡大されます。)
割愛しますが、「ステップ4 確認と作成」ではこれまで設定した内容の確認なので問題なければ作成させてください。
作成したファイル共有のステータスが「利用可能」になれば作成完了です。
ファイル共有のリンクをクリックすると、「コマンド例」が出てきますが、こちらのコマンドを実行すればWindows PCから接続することができます。([WindowsDriveLettert]はZなど任意の文字に変えてください。ZにするとZドライブとしてマウントされます。)
コマンドでうまく入力できなければWindows10でのGUI操作でマウントする方法を後述しているので参考にしてください。

(クリックすると画像が拡大されます。)
Windows PCでStorage Gatewayをマウントする
Windows PCからのマウント方法を説明します。
プライベートVPCにStorage Gatewayを構築した場合はVPNに接続するなどしてStorage Gatewayにアクセスできる状態で手順を進めてください。
Windows PCはPro以上のエディションを使用する必要があります。
Pro以上でないとSMBダイレクトの機能が使えないためです。
Storage Gatewayのマウント手順
エクスプローラーを開き、「PC」項目上で右クリックし「ネットワークドライブの割り当て」を選択します。

(クリックすると画像が拡大されます。)
ネットワークの割り当てウィンドウでは「ドライブレター」を選択し、フォルダーに「\\【Storage Gatewayの接続先IP or ドメイン名】\【ファイル共有名】」を入力し、「サインイン時に再接続する」と「別の資格情報を使用して接続する」にチェックして「完了」をクリックします。

(クリックすると画像が拡大されます。)
資格情報の入力ウィンドウでは「【Storage Gateway ID】\smbguest」と「【ゲストパスワード】」を入力し「OK」ボタンをクリックします。Storage Gateway IDはsgw-xxxxxのような形式になっているはずです。

(クリックすると画像が拡大されます。)
Storage Gateway経由でネットワークドライブに接続し、S3内のファイルを参照・更新できるか確認できればOKです。

(クリックすると画像が拡大されます。)
コマンドではなくGUI操作でマウントする
「net use」コマンドでも接続は可能ですが、接続しにくい場合があります。
上記の「Storage Gatewayのマウント手順」のようにGUI操作で接続した方がつながりやすいです。
資格情報の入力では2,3回「OK」をクリックする
以下の資格情報の入力ウィンドウでは2,3回「OK」を押すとつながることがあります。

(クリックすると画像が拡大されます。)
それでもダメならSMBダイレクトが有効か確認する
コントロールパネルから「プログラム」を選択し、「プログラムと機能」をクリックします。
「Windowsの機能の有効化…」をクリックし「SMBダイレクト」にチェックがあるか確認してください。
SMBダイレクトにチェックがなければ、チェックしたうえで「Storage Gatewayのマウント手順」を試してみてください。
また、SMBダイレクトがWindows機能のリストにない場合はWindowsのエディションがPro以上でない可能性があります。その場合はProにグレードアップするかSMBダイレクトをインストールできないか模索してみてください。

(クリックすると画像が拡大されます。)
いかがだったでしょうか。「S3 + Storage Gatewayのメリットデメリット」を踏まえて、Storage Gatewayを使用する場合の手順やマウント方法を理解していただけたら嬉しく思います。
また、Storage Gatewayを使用する場合、S3に直接ファイルアップロードしたものについてはちょっとした手間をかけないと更新されません。こちらの記事で更新方法を紹介していますので良ければ参考にしてください。
S3+StorageGatewayの構成では、S3に直接ファイルアップロードした際にStorageGatewayのキャッシュ更新が必要です
PWAのメリットや実装方法を紹介しています。興味があればぜひご覧ください。
追記:インターネット越しのStorage Gateway構成は読み書きが遅いので注意
本記事で紹介しているように、インターネット越しにStorage Gatewayを配置すると「思ったより読み書きが遅くて使いにくい」となる可能性があります。
普通に使っている分には問題ないのですが、「大量のファイルを一覧表示させたり」、「もともと読み込みが遅いファイルがある」場合は遅くてストレスに感じるかもしれません。
読み書き速度については以下でベンチマークソフトの数値を紹介しているので参考にしてみてください。
Storage Gatewayをインターネット越しに配置すると速度がめちゃくちゃ遅いので注意
Storage Gatewayの読み書き速度の測定結果を紹介しています。どれくらい遅いのか数値的にわかるので興味があればぜひご覧ください。
また、Storage GatewayではなくS3マウントソフトを使うのも1つの手です。
S3マウントソフトを使うとPC版GoogleドライブのようにS3を使うことができます。
フリーで使えるS3マウントソフトは以下を参考にしてください。