こんにちは。ガジェット好き、22卒の平松です。 現在、テクサポ課で修行中の身です。
Storage Gatewayついて調べていたら、概念含めわかりにくいところがあったので、ブログにしてみようと思い、筆を執りました。
お手柔らかにお願いいたします。。。
今回実現したいこと
今回は以下のようなプライベート環境で、 Storage Gateway on EC2 を使うためのAWSとの接続をアクティベーションキーで行う方法を試してみます。
本ブログでは、具体的なStorage Gatewayの構築方法については解説しません。実際の構築方法はこちらのブログをご覧ください。
前提
そもそもStorage Gatewayを利用する際には、AWSがGatewayアプライアンスを制御できるようにするために、AWSに接続しなくてはなりません。そのために、Storage Gateway用のVPCエンドポイントが必要となっています。
どういうことかというと、以下の図のように、Storage Gatewayには実際のデータが動くData Flowと、AWSがGatewayアプライアンスを制御するためのControl Flowが存在します。AWSに接続するというのは、このControl Flowを確立することを指します。(図はアプリケーションサーバーとGatewayアプライアンスがオンプレにありますが、これらがクラウド側にあったとしても、この2つのフローが確立されます。) 引用:Connect Amazon S3 File Gateway using AWS PrivateLink for Amazon S3 | AWS Architecture Blog
その接続を行う設定が、Storage Gateway作成手順の中のこちらの部分です。
ご覧の通り、AWSに接続する方法は2つあります。
- IPアドレス
- アクティベーションキー
上記添付ブログにて、1のIPアドレスで接続するやり方が解説されています。 今回は、2のアクティベーションキーを取得して、AWSに接続する方法を試してみたいと思います。
実際にやってみる
curlコマンドでアクティベーションキーを取得する
アクティベーションキーの取得方法は以下の公式ドキュメントに記載があります。
Getting an Activation Key for Your Gateway - AWS Storage Gateway
※ 2022/11月時点では、日本語表示ではcurlコマンドでの取得方法の記載がないので、英語表示でご覧になってください
このドキュメントに「ゲートウェイのアクティベーション キーを取得するには、ゲートウェイ VM に対して Web 要求を行い、アクティベーション キーを含むリダイレクトを返します。」と記載の通り、アクティベーションキーを取得するために、ゲートウェイ VM(今回はEC2)に対して、httpリクエストを行うので、Storage Gateway用のEC2のSGは80番ポートの許可が必須となります。
今回は、curlコマンドでのアクティベーションキーを取得してみます。 (踏み台経由でクライアントEC2にSSHログインし、そこでcurlコマンドを実行します)
curl "http://gateway_ip_address/?gatewayType=gateway_type&activationRegion=region_code&vpcEndpoint=vpc_endpoint&no_redirect"
以下の項目を上記のコマンドに代入します。
- gateway_ip_addressにStorage Gateway用のEC2のプライベートIPアドレス
- gateway_typeに作成するStorage Gatewayのタイプ(今回はS3ファイルゲートウェイのため、FILE_S3)
- region_codeにはリソースを作成しているリージョンコード
- vpc_endpointにはStorage Gateway用のエンドポイントのアベイラビリティ ゾーンを指定していないDNS名(下記画像赤枠)
クライアントEC2にログインした状態で、このコマンドを実行すると、以下のようにアクティべーションキーが返ってきます。
これでアクティベーションキーを使ってAWSに接続することが可能になります。
おまけ
アクティベーションキーを取得して、しばらく未使用だと有効期限切れになります。
それを知らずに、キーを入力して接続しようとすると、このようなエラーが出ます。 私はアクティベーションキーを取得したタイミングが金曜夕方で、そのキーで月曜に接続しようとしたのでこうなりました。。。
アクティベーションキーを取得してからわざわざ寝かせる人はいないと思いますが、念のためご注意ください。