LoginSignup
0
0

VPC間でVPCエンドポイントを共有する

Posted at

はじめに

プライベートサブネットでAWSサービスに気軽に接続できるVPCエンドポイント。便利でも、維持が面倒くさい。エンドポイント自体の管理・セキュリティグループの管理、ENIの管理・・・色々管理の面倒くささもあるが、時間単位で料金がかかる(0.01USD/hなので月7.2USDも)のも何か腑に落ちない。

見積もり

この手法ではTransit Gatewayを使ってVPC間でVPCエンドポイントを共有する。Transit Gateway自体の値段はアタッチメントごとに0.05USD/hかかるので、2つのVPCでも、VPCエンドポイントの数が10以上ある場合はコスト優位になる。プライベートVPCにおけるFargateでは、最低4つVPCエンドポイントが必要(過去記事参照)なので、色んなサービスを閉域VPCで使い倒す場合は平気でエンドポイント数が10を超えるのではないかと思う。

過去記事:https://qiita.com/bd8z/items/daa1d08980c0c9c65c46

今回やること

2つのVPC間でVPCエンドポイントを共有する。図中の番号は以降の手順の番号と同じ。
image.png

前提

  • 2つのVPCと各VPCにプライベートサブネットが存在
  • VPCエンドポイントは片方のプライベートサブネットに存在
  • 今回の例ではSQSへのVPCエンドポイントとする

手順

Step1 VPCの準備

対象となるVPCにて「DNSホスト名が有効」であること、「DNS解決が有効」であることを確認する。この設定がないとRoute53プライベートホストゾーンがうまく働かないので注意。
image.png

Step2 VPCエンドポイントを作成する

Interface型のVPCエンドポイントを作成する。DNSはRoute53により設定するため、エンドポイントの設定で「DNS 名を有効」を設定しない
image.png

Step3 TransitGatewayを作成する

各種設定はマネコンデフォルトのままで問題ない。
image.png

Step4 TransitGatewayアタッチメントを作成する

設定するVPCのサブネットごとにTrangit Gateawayを紐づけるため、VPCごとにアタッチメントを作成する。「アプライアンスモードサポート」を有効にしておくと、後のルートテーブルの設定で手順が減る。アタッチメントモードはVPC間の接続なので「VPC」でよい。
image.png

作成後のようす:VPCごとにアタッチメントがある
image.png

Step5 TransitGatewayルートテーブルを作成する

作成したTrangit Gateawayルートテーブルを見ると、各VPCへのルートテーブルが作成されている。NATゲートウェイなどを共有する場合は、0.0.0.0/0ヘのルートの設定が必要になるが、今回の場合では、ルートが正しく設定されていれば特に作業はない。

image.png

Step6 VPCとサブネットのルートテーブルを編集

Transit GatewayのルートテーブルはTrangit Gateawayの中でのルートテーブルでしかない。各VPCの通信がお互いのVPCのCIDR範囲に向くように、Trangit Gateawayをターゲットにルートテーブルを設定する。ここでサブネットの関連付けを行っておくと、サブネットにてVPCと別にルートテーブルを設定する作業が必要がなくなるので、関連付けておくと良い。

image.png

Step7 Route53にてプライベートホストゾーンを作成

作成したDNSエンドポイント名を確認し、DNSエンドポイント名に応じたドメイン名でプライベートホストゾーンを作成する。

参考:VCPエンドポイントの画面
image.png

  • エンドポイントのDNS名:vpce-0e70fb14223b3f28d-hxl4u56c.sqs.ap-northeast-1.vpce.amazonaws.com
  • 設定するドメイン名sqs.ap-northeast-1.amazonaws.com
    vpce.部分は必要ない。エンドポイントからコピペする時注意。

ホストゾーンには対象のVPCに関連付ける
image.png

Aレコードを作成する。エイリアスを選ぶとVPCエンドポイントを選択できる。
image.png

最後の確認

ここまでの手順でVPCエンドポイントの共有が終わっているはずなので、EC2からエンドポイントの名前解決ができるか、AWS CLIコマンドが通るか確認する。
image.png
無事名前解決とAWS CLIコマンドが通っている。OK!

最後に

VPCエンドポイントの名前を明示的に指定する必要があるサービスといえば、プライベートAPIぐらいか。作った関数、アプリなどそのまま使えるのは非常にうれしいが、Trangit Gateawayは通信が無料なVPCピアリングと比べてしまうと割高に感じる。でも企業アカウントなどVPCを多く運用するようなパターンにおいては有用かな・・・。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0