こんにちは。CCoEに興味がある福島です。
- はじめに
- 構成比較
- コスト比較
- 試してみる
- ③VPCエンドポイントの作成
- ④動作確認
- 補足: Resource GatewayのターゲットとなるALBのSGのインバウンドはResource Gatewayが存在するサブネットのCIDRで許可する理由
- 終わりに
はじめに
開催中の AWS re:Invent 2024 より、NLBを使わないPrivateLinkの実装についてご紹介します*1。
構成比較
NLB + VPCエンドポイントサービス + VPCエンドポイント(Interface型)パターン
今まではPrivateLinkを実装する場合、以下のような構成を組むことが多かったかと思います。 以降、この構成を便宜上、旧構成と記載します。
Rerouce Gateway + Resrouce Configuration + VPCエンドポイント(Resource型)パターン
今回のアップデートにより、NLB + VPCエンドポイントサービスの代わりにRerouce Gateway + Resrouce Configurationが利用できるようになりました。 以降、この構成を便宜上、新構成と記載します。
- ポイント
- VPCエンドポイントにResource型という新しい種別が追加された
- Resource GatewayおよびResource Configurationは、VPC Latticeのコンポーネントの一部
- 新構成は、(ELBのターゲットグループに指定できなかった)FQDNの指定も可能
- 新構成の方がコストが安価(詳細はコスト比較に記載)
- 異なるアカウントでPrivateLinkする場合、Resource ConfigurationをRAMで共有する必要がある
- Resource GatewayのターゲットとなるリソースのSGのインバウンドには、Resource GatewayのサブネットのCIDRで通信を許可する必要がある(Resource Gatewayに付与したSGはNG)
コスト比較
それぞれの構成でコストを比較してみました。 結果、新構成の方が月額1000円以上、安価に利用できることが分かりました。
- ポイント(所感)
- VPCエンドポイントのResource型は、Interface型の2倍の料金($0.028)になる
- ただ、NLBの利用料(0.0243)が発生しないため、トータルで見ると新しいPrivateLinkの実装が安価になる
- NLBのデータ処理料(NLCU)とResource Gatewayのデータ処理料($0.006)は同一だが、NLCUは時間あたりでResource Gatewayは1GBあたりのため、後者の方が安価になるケースが多そう
参考
料金 - Elastic Load Balancing | AWS
Simplified Application Networking – Amazon VPC Lattice Pricing – Amazon Web Services
試してみる
検証の構成
ここから親構成を実装する方法をご紹介いたします。 同一のアカウントでVPCを分けて検証を行います。 赤枠以外のリソースは作成できている前提で記載します。
SGの設定
また、Security Groupの設定は以下の通りです。
- VPCエンドポイントのSGのインバウンドはEC2からの通信を許可
- Resource GatewayのSGのインバウンドは不要
- Resource GatewayのターゲットとなるALBのSGのインバウンドはResource Gatewayが存在するサブネットのCIDRで許可
実装する流れ
実装する流れは以下の通りです。
①Resource Gatewayの作成
②Resource Configurationの作成
③VPCエンドポイントの作成
①Resource Gatewayの作成
VPCのコンソールにアクセスし、左側のナビゲーションペインから「Resource gateways」→「Create resource gateway」の順に押下します。
任意の名前を付与し、Resource Gatewayをデプロイするサブネットを指定します。(最低2つ指定する必要あり)
Security Groupを指定します。
無事に作成できました。 ARNを見て分かる通り、Resource GatewayはVPC Latticeのコンポーネントの一部であることが分かります。
②Resource Configurationの作成
VPCのコンソールにアクセスし、左側のナビゲーションペインから「Resource configurations」→「Create resource configuration」の順に押下します。
任意の名前を付与し、Resource Gatewayを指定します。
- 補足
- 前提として、AWSアカウント間で新構成を実装する場合、Resource configurationをAWSアカウント間で共有する必要があります。
- Configuration typeのResource groupを活用すると、複数のResource configuration(Resource) をグルーピングできます。
- おそらく、これによりResource configuration(Resource group)だけを別のアカウントに共有するだけで良くなる(個々のResource configuration(Resource)を共有する必要がない)ため、管理を楽にできそうです。
ターゲットとなるドメイン名およびポートを指定します。 (今回はALBのドメインを指定します。)
アクセスログの出力も可能なため、CloudWatch Logsに出力してみます。
③VPCエンドポイントの作成
- 注釈
- 今回は同一のアカウントで検証しているため不要ですが、異なるアカウント間でPrivateLinkを実装したい場合、事前に先ほど作成したResource configurationをRAMで別のアカウントに共有する必要があります。
VPCのコンソールにアクセスし、左側のナビゲーションペインから「エンドポイント」→「エンドポイントを作成」の順に押下します。
任意の名前を付与し、リソースタイプをを指定します。
リソースの設定およびネットワークの設定を行います。
最後にサブネットとSecurity Groupを指定します。
無事に作成が完了します。 作成が完了したら、関連付けタブからDNS名の列を確認します。
④動作確認
最後にEC2からVPCエンドポイントにアクセスし、別VPCにALBに無事にアクセスできました!
CloudWatch Logsには以下のようなログが出力されていました。
補足: Resource GatewayのターゲットとなるALBのSGのインバウンドはResource Gatewayが存在するサブネットのCIDRで許可する理由
Resource Gatewayは常時、サブネットごとにENIが1つあるよう(画像1)ですが、ターゲットと通信する際には別のIPが利用されているよう(画像2のGatewayIpPort)です。 そのため、Resource Gatewayに割り当てられたIPやSGでの制御ではなく、Resource Gatewayが存在するサブネットのCIDRを指定する必要があるようです。
終わりに
今回は、新しいPrivateLinkの実装について、ご紹介いたしました。 どなたかのお役に立てれば幸いです。
*1:現地時間12月1日発表の機能のため AWS re:Invent 2024 が12月2日からだと考えると、正しくは re:Invent 期間外と言えるかもしれません