こんにちは、クラウドCoEの西村です。
現在、AWS Client VPNとACMを利用して、特定のクライアント証明書を所持するクライアントのPC端末からのみアクセスを許容するようなシステムを構築しています。
こちらの構築方法についても機会があればご紹介したいと考えていますが、今回はこのような空間にStorage Gateway(ファイルゲートウェイ)を構築する際のポイントについてご紹介したいと思います。
ということで、今回のBTC Tech Blogの内容は「インターネットと通信しないVPC内にAWS Storage Gatewayを構築してみた」です。
本記事ではStorage Gateway(ファイルゲートウェイ)はどういったサービスなのか、基本的な使い方と構築方法についてまとめていきたいと思います。
Storage Gatewayのファイルゲートウェイは、Amazon S3へのファイルインターフェースをサポートしています。オンプレサーバやEC2インスタンス等からStorage Gatewayのファイル共有マウントポイントにマウントすることで、S3のオブジェクトを直接保存及び取得することを可能にするサービスです。
NFSやSMBなどのファイルプロトコルを使用できます。
また、ファイル共有対象となるS3バケットやそのディレクトリ、ファイル共有を許可するクライアントIPアドレスなども設定することが可能です。
インターネットからアクセスできる場所にStorage Gatewayを構築する場合は、マネジメントコンソールの手引きに沿って進めていくだけで構築ができます。
が、今回はプライベートサブネット上に構築しますので、マネジメントコンソールからの構築はうまくいきませんでした。
※構築途中でウェブブラウザからStorage GatewayのIPアドレスに接続する必要があります。
同様の環境でマネジメントコンソールからの構築にうまくいったという方は、是非方法を教えてください!
簡易的ではありますが、構築イメージは以下の通りです。
それでは、AWS CLIを使って成功したパターンの構築手順を見ていきましょう。
1. Storage gateway用のEC2を構築
Storage Gatewayの実体はEC2ですので、まずはプライベートサブネットにEC2を構築します。
マシンスペックやSGの要件等は公式ドキュメントを参照ください。
AMIは「storage gateway」で検索し、ヒットしたコミュニティAMIから選択します。
2. アクティベーションキーの取得とアクティベーション
続いて、EC2をStorage Gatewayとして動作させるためのアクティベーションキーを取得します。
ここで、マネジメントコンソールからだと行き詰まってしまうため、CLIを使用します。
アクティベーションキーの取得はcurlコマンドで可能です。VPN接続した状態で、以下のコマンドをたたきます。
curl 'http://xxx.xxx.xxx.xxx(Storage GatewayのプライベートIPアドレス)/?gatewayType=FILE_S3&activationRegion=ap-northeast-1&vpcEndpoint=vpce-xxxx.storagegateway.ap-northeast-1.vpce.amazonaws.com(Storage GatewayのVPCエンドポイントのDNS名)&no_redirect'
これでアクティベーションキーを取得できるので、AWS CLI を使用してゲートウェイをアクティブ化します。
aws --region ap-northeast-1 storagegateway activate-gateway --activation-key xxxxx-xxxxx-xxxxx-xxxxx-xxxxx(アクティベーションキー) --gateway-type FILE_S3 --gateway-name xxxx(Storage Gateway用EC2インスタンス名) --gateway-timezone GMT+9:00 --gateway-region ap-northeast-1 --endpoint-url https://vpce-xxxx.storagegateway.ap-northeast-1.vpce.amazonaws.com(Storage GatewayのVPCエンドポイントのDNS名) { "GatewayARN": "arn:aws:storagegateway:ap-northeast-1:xxxxxxxxx:gateway/sgw-xxxxxxx" }
この段階で、マネジメントコンソール上にもStorage Gatewayが作成されます。
3. キャッシュボリュームの割り当て
マネジメントコンソールから構築を進めた場合はキャッシュボリュームを割り当てる工程があるのですが、CLIでの構築では、まだ割り当てられていません。
まずは通常の工程通りEBSを作成し、Storage Gateway用EC2インスタンスにアタッチします。
その後、Storage Gatewayのサービスページからアクション>ローカルディスクの編集と進み、作成したEBSをキャッシュボリュームとして割り当てます。
4. ファイル共有の作成
Storage Gateway構築の仕上げとして、ファイル共有を作成します。
サーバ等からマウントさせたいS3バケットやそのプレフィックスを指定し、ファイル共有名を設定します。ファイル共有名はマウントコマンドに影響してきますので、バケット名を意識させたくない場合は変更してください。
また、Storage Gatewayを介さずにS3バケット上のオブジェクトを直接変更した場合、Storage Gatewayからはその変更が認識できず、マウントしたサーバにも反映されません。
「次の時間後の S3 からのキャッシュの自動更新」の項目は、これらの変更をどの程度の間隔でキャッシュとして反映させるかを指定するものです。直接オブジェクトを操作する可能性がある場合は設定必須です。
マウントを許可するクライアントのIPアドレスの指定や、オブジェクトに対する操作権限も設定できます。
ここまでの作業で、Storage Gatewayの構築は完了しています。作成したファイル共有のページには、Linux/Microsoft Windows/macOSに対するマウントコマンドも表示されます。
表示されているコマンドをたたけばS3上のオブジェクトが見えるようになっているはずです。
マネジメントコンソールからアクティベーションがなかなかできなかったことと、S3上のオブジェクトを直接変更した際に何故反映されないのか原因が分からなかったことで、構築に時間を費やしてしまいました。
これまでStorage Gateway(ファイルゲートウェイ)の構築方法について説明してきました。
パブリックサブネットに構築する場合はマネジメントコンソールから簡単に構築できるのですが、プライベートサブネットに構築する場合はひと手間掛かります。
Storage Gatewayのファイルゲートウェイをうまく活用すれば、データをS3に置いたままオンプレサーバやEC2インスタンス上から簡単にファイルを扱うことができます。
このような便利なサービスを活用し、運用を楽にしていきたいですね。
では、また次の記事でお会いしましょう。