今から始める Amazon VPC Lattice

本記事は TechHarmony Advent Calendar 2024 12/25付の記事です

こんにちは、SCSKでAWSの内製化支援『テクニカルエスコートサービス』を担当している貝塚です。

re:Invent 2024で『VPC LatticeがTCPによるアクセスをサポート』というアナウンスがありました。

VPC Lattice now includes TCP support with VPC Resources - AWS
Discover more about what's new at AWS with VPC Lattice now includes TCP support with VPC Resources

PrivateLinkの機能追加とあわせて、AWSのネットワークまわりに大きな変化がありそうです。

……と言っておきながら、実は私、VPC Latticeを使ったことがありません。というのも、VPC Latticeはコンテナと合わせて語られることが多く、あまりコンテナと関わってこなかった私にとっては、そのうち勉強しようと思っているけれどなかなかその機会に恵まれないサービスだったのです。

そういうわけで、re:Inventで発表された機能を使ってみる前に、とりあえずVPC Latticeを使ってみよう、というのが本記事の趣旨になります。

検証構成

今回は、まずは基本を抑えねばということで、新機能の検証ではなく、従来通りのVPC Latticeを試してみることにしました。図にすると以下のようになります。

Lattice_Arch

VPC Latticeがどういうものかというと、ALBに近いものをイメージすればよさそうです。今回の機能拡張前は、HTTPとHTTPSのみの対応であったという点もALBに似ています。

Service NetworkがALB本体のようなもので、接続元となるVPCに関連付ける必要があります。
Serviceは、ALBのリスナーとターゲットグループをひとまとめにしたようなものです。リスナーとターゲットグループという用語はALBそのままですね。何番ポートで通信を待ち受けて(リスナー)、どこ(どのIP/どのインスタンス、など)に転送するか(ターゲットグループ)を設定します。

環境構築

マネジメントコンソールでは、『VPC』→ 『PrivateLink and Lattice』のメニューから設定を進めていきます。

menu_Lattice

ターゲットグループの作成

まずは接続先を定義するターゲットグループから作成していきます。

メニューから『ターゲットグループ』を選択し、『ターゲットグループの作成』をクリックします。

ターゲットタイプの選択では、インスタンスよりIPアドレスの方が汎用性が高い使い方ができるだろうということで、IPアドレスを選択しました。

create_target_group

ターゲットグループ名、プロトコル、ポート、IPアドレスタイプ、接続先側のVPC、プロトコルバージョン、ヘルスチェックを指定します。今回はつながりさえすればよいというのを目標にしているので、HTTP(80番ポート)でEC2に接続し、ヘルスチェックもデフォルトのまま( / へのHTTPによるヘルスチェック)にします。

create_target_group2

次の画面に進むと、ターゲットの登録をすることになります。VPCを選択し、接続先のIPとポートを指定して、『保留中として以下を含める』をクリックするとターゲットとして登録されます。

create_target_group3-0

ターゲットが登録されたら『ターゲットグループの作成』をクリックしてターゲットグループの作成を完了させます。

サービスの作成

メニューから『Lattice services』を選択し、『サービスを作成』をクリックします。とりあえずつながることを目指しているので、カスタムドメイン設定、サービスアクセス、Share service、モニタリングはデフォルトのまま進みます。

create_service

次へ進み、『ルーティングを定義』というところでリスナーの設定をします。プロトコルをHTTPに、ポートを80に設定します。リスナールールは設定せず、リスナーのデフォルトアクションとして『ターゲットグループへ転送します』を選び、ターゲットグループとして先ほど作成したターゲットグループを選択します。

create_service2

次にサービスネットワークの関連付けの画面が出ますが、まだサービスネットワークは作成していないので、飛ばします。『確認と作成』画面が出るので、『VPC Latticeサービスを作成』をクリックしてサービスを作成します。

サービスネットワークの作成

メニューから『サービスネットワーク』を選択し、『サービスネットワークを作成』をクリックします。

サービスの関連付けのところで、先ほど作成したサービスを選択します。VPCの関連付けのところで、接続元のVPCを指定し、適用するセキュリティグループを選びます。他はデフォルトのままでサービスネットワークを作成します。

create_service_network

接続確認

設定はこれで完了ですが、先ほど登録したターゲットは生きていると判定されているでしょうか。作成したターゲットグループを選び、『ターゲット』タブを確認します。ヘルスステータスが正常になっているので、うまくいったようです。

target_health

さて、接続確認を実施したいのですが、どこにアクセスすればよいのでしょうか?答えは、「サービス」の詳細のところにあります。

fqdn

「ドメイン名」を確認し、接続元VPCのEC2から接続してみます。

access_to_lattice_2

接続できました!

考察

接続できましたが、どのような仕組みになっているのか気になるところです。

まずは、ドメイン名を名前解決するとどうなるか確認してみます。

name_resolution

169.254. から始まるリンク・ローカル・アドレスが返ってきました。

接続元EC2が存在するサブネットのルートテーブルを確認してみます。

route_table_source

129.224.0.0/17と169.254.171.0/24が登録され、ターゲットがVpcLatticeとなっています。

129.224.0.0/17はどこで使われるのでしょうね?これは今後気が向いたら調べることにします。

次に、接続を受ける側のEC2で、どこから通信が来ているのかtcpdumpを使って確認してみます。

tcpdump1

/ にはいくつかのIPから通信が来ていて紛らわしいので、/test にアクセスしてみました。169.254.171.194から来ていることが分かります。こちらもリンク・ローカル・アドレスということですね。

接続先側のルートテーブルも確認してみます。

route_table_dest

169.254.171.0/24が登録され、ターゲットがVpcLatticeとなっています。

今回、説明を端折りましたが、169.254.から通信が来るので、接続先EC2のセキュリティグループで169.254.のCIDRを許可してやる必要があります。

接続元側は169.254.xx.xxのIPに接続し、接続先側は169.254.xx.xxから通信が来ているように見えるということは、もし別のVPCから利用したいという場合には一工夫する必要がありそうです。もっとも、一工夫するのではなく素直に接続元VPCにLatticeを構築するのが正攻法だと思います。

まとめ

VPC Latticeの新機能を試す前に、まずはこれまでのVPC Latticeがどういうものなのか知らなくては、という動機でこの記事を書き、なんとなくどういうものなのか分かってきました。

次は、新機能の検証に進みます。

著者について

SCSKにて、AWSの技術支援を提供するAWSテクニカルエスコートサービスの業務に従事しています。
自称ネットワークエンジニア。
CloudFormationは触っていても面白みが感じられないけれどCDKは好き。

2024 Japan AWS Top Engineers (Networking)
2024 Japan AWS All Certifications Engineers

その他所持資格:
IPA 情報処理安全確保支援士

好きなすみっコはとかげ。

貝塚広行をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSクラウドソリューションネットワーク
シェアする
タイトルとURLをコピーしました