VPCにVPCエンドポイントを集約してみました。Zoneが必要ですが、VPCエンドポイントにアクセスしたいVPC及びVPCエンドポイントの数が多くなれば多くなるほど、VPCエンドポイントを集約した方がお得になっていく傾向があります。53#AWSのんピ2021.10.18この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。各VPC毎にVPCエンドポイントを作成するのは何だかイケていない気がするこんにちは、のんピ(@non____97)です。GatewayやVPCエンドポイントなどのネットワークリソースの中央監視と制御をするためのアーキテクチャーです。VPCに集約することで、リソースの管理をしやすくしたり、トータルの課金額を抑えたりできます。Gatewayの集約はよくするのですが、VPCエンドポイントの集約はやったことがなかったので、今回チャレンジしてみようと思います。ちなみに、この記事をほぼ書き終えたタイミングで気づきましたが、同じ内容が既に投稿されていました。53のコンソールのUIが変わっているので許してください。それだけだとまだ物足りない方もいらっしゃると思うので、VPCエンドポイントを集約することで、どの程度課金額がお得になるのかも計算してみます。検証の環境は以下の通りです。BにSSMを使用するために必要なVPCエンドポイントを集約します。検証の流れは以下の通りです。BのVPCエンドポイントに対して名前解決をします。VPCのコンソールからエンドポイントを選択します。以下のVPCエンドポイントがあることを確認します。AのEC2インスタンスから名前解決を行います。vpce-07f12be0f999f2576-0mz5lmwo.ssm.us-east-1.vpce.amazonaws.comvpce-07f12be0f999f2576-0mz5lmwo-us-east-1a.ssm.us-east-1.vpce.amazonaws.comvpce-07f12be0f999f2576-0mz5lmwo-us-east-1b.ssm.us-east-1.vpce.amazonaws.comssm.us-east-1.amazonaws.com名前解決を行うと、vpce-から始まるDNS名は名前解決するとプライベートIPアドレスが返ってきました。ssm.us-east-1.amazonaws.comについてはグローバルIPアドレスが返ってきました。72実際にSSMエージェントがSSMのサービスエンドポイントにアクセスする際は、ssm.us-east-1.amazonaws.comに対してアクセスを行おうとします。そのためssm.us-east-1.amazonaws.comを名前解決した時にグローバルIPアドレスが返ってくると、インターネットに接続できる環境が必要になります。service-code.region-code.amazonaws.com形式のDNS名を名前解決したときにグローバルIPアドレスが返ってくる理由は、service-code.region-code.amazonaws.com形式のDNS名は、あるリージョンのサービスエンドポイントであり、VPCエンドポイントと関連付いていないためです。vpce-から始まるDNS名はグローバルに一意なDNS名です。そのため、名前解決したときに、service-code.region-code.amazonaws.comドメインはサブドメインであるvpc-xxxxがどこのVPC上で作成されたVPCエンドポイントかを一意に特定できます。A上のEC2インスタンスや手元のMacやWindowsマシンなどからvpce-から始まるDNS名を名前解決をするとプライベートIPアドレスが返ってきます。一方でservice-code.region-code.amazonaws.com形式のDNS名は、あるリージョンのサービスエンドポイントであるため、プライベートIPアドレスを返すようにするためには工夫が必要です。具体的には、EC2インスタンスのデフォルトのDNSサーバーであるAmazonProvidedDNSがservice-code.region-code.amazonaws.com形式のDNS名への名前解決を受け付けたときに、vpce-から始まるDNS名の名前解決結果を回答するようにします。B上のSSMのVPCエンドポイント(vpce-07f12be0f999f2576-0mz5lmwo.ssm.us-east-1.vpce.amazonaws.com)と認識できるようになれば、名前解決したときに、そのVPCエンドポイントのプライベートIPアドレスを返してくれるようになります。Aへの関連付け」を行います。Aへの関連付けを行います。ホストゾーンの作成をクリックします。以下のように設定して、ホストゾーンの作成をクリックします。Zoneの作成が完了すると、登録されているレコード一覧を確認できます。次にレコードを作成します。Zoneのレコード一覧からレコードを作成をクリックします。APEXに対してVPCエンドポイントのDNS名のエイリアスレコードを設定し、レコードを作成をクリックします。Aトラフィックのルーティング先:エイリアスVPCエンドポイントのエイリアスVPCエンドポイントを作成したリージョンVPCエンドポイントのIDエイリアスレコードが追加されていることを確認します。A上でssm.us-east-1.amazonaws.comを名前解決すると、プライベートIPアドレスが返ってくるようになります。Zone作成とレコードの追加をします。AのEC2インスタンスから名前解決をします。ssm.us-east-1.amazonaws.comssmmessages.us-east-1.amazonaws.comec2messages.us-east-1.amazonaws.com.名前解決を行うと、全てのDNS名でプライベートIPアドレスが返ってきました。Gatewayへのルートを削除しても、SSMセッションマネージャーでEC2インスタンスに接続できるかを確認します。AのEC2インスタンスのサブネット、ルートテーブルをたどっていきます。Gatewayのルートがあるので、こちらを削除します。これでEC2インスタンスがインターネットに出ていく経路がなくなりました。この状態でSSMセッションマネージャーを使ってEC2インスタンスに接続します。すると、SSMセッションマネージャーを使ってEC2インスタンスに接続することを確認できました。B上のVPCエンドポイントに正常にアクセスできていそうですね。SSMエージェントのログも確認しておきます。ログは以下の通りで、特にエラーは発生していませんでした。VPCに集約することによる課金額への影響を確認します。具体的には、以下VPCエンドポイントへの接続パターン毎に課金額がどのようになるのかを算出します。課金額を算出するにあたっての前提条件は以下の通りです。Gatewayで接続)構成図は以下のようになります。1ヶ月あたりの課金額の計算結果は以下の通りです。VPCエンドポイント数を変更すると固定費は以下のように変化します。VPCに集約するパターン(VPCピアリングで接続)構成図は以下のようになります。1ヶ月あたりの課金額の計算結果は以下の通りです。VPCエンドポイント数を変更すると固定費は以下のように変化します。Gatewayで接続)構成図は以下のようになります。1ヶ月あたりの課金額の計算結果は以下の通りです。VPCエンドポイント数を変更すると固定費は以下のように変化します。VPC毎にVPCエンドポイントを作成するパターン(VPC間の接続なし)構成図は以下のようになります。1ヶ月あたりの課金額の計算結果は以下の通りです。VPCエンドポイント数を変更すると固定費は以下のように変化します。USD課金額の比較VPCエンドポイントへの接続パターン毎の課金額をまとめると以下の通りです。VPC毎にVPCエンドポイントを作成するパターン(VPC間の接続なし)固定費が課金額全体の中で大きなウェイトとなるので、VPCエンドポイントの集約の有無で、どの程度固定費に差が出るのかを比較してみました。比較結果は以下の通りです。90.00%VPCエンドポイントにアクセスしたいVPC及び、VPCエンドポイントの数が多くなれば多くなるほど、VPCエンドポイントを集約した方がお得になっていく傾向があることが分かります。USDしか影響しないため、課金額全体への影響は微々たるものだと考えます。VPCに接続するかでコストが大きく変わります。Gatewayで接続するか、VPCピアリングで接続するかは、以下を目安に考えると良いかと思います。VPCエンドポイントを集約してみました。課金額に注目すると、VPCエンドポイントの集約は確かにメリットがあることを確認できました。一方で、VPCエンドポイントを共有して使用するため、リソース変更の柔軟性は失ってしまいます。VPCに接続すると、VPCエンドポイントへ通信する際に追加で課金が発生してしまうので要注意です。この記事が誰かの助けになれば幸いです。