【NLBが不要に!】新しいPrivateLinkの実装について

記事タイトルとURLをコピーする

こんにちは。CCoEに興味がある福島です。

はじめに

開催中の AWS re:Invent 2024 より、NLBを使わないPrivateLinkの実装についてご紹介します*1

aws.amazon.com

構成比較

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あたりのため、後者の方が安価になるケースが多そう

参考

AWS PrivateLink Pricing – AWS

料金 - 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 期間外と言えるかもしれません

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。