Amazon VPC Lattice サービスネットワークの概要と各設定項目ついて

2023.11.27

こんにちは、AWS事業本部の木村です。

今回の記事では、Latticeのサービスネットワークの役割と各設定項目の内容について説明していきたいと思います。

Latticeのサービスネットワークとは?

まずLatticeのサービスネットワークの概要について説明していきたいと思います。

以下がLatticeの全体の構成図になります。

赤枠で囲っている部分が今回の対象となるサービスネットワークになります。

サービスネットワークで設定を行えるのは主に以下の5つの項目になります。

  • 識別子の設定
  • サービスの関連付けする
  • VPCの関連付けする
  • 認証設定の有無
  • ログの設定

これらの5つの項目については後ほど実際の設定画面で設定内容と共に説明させていただきます。

項目の中でも「サービスを関連付けする」と「VPCを関連付けする」が重要な役割を持っていて、この関連付けを行うことによってVPC内からサービスにアクセスができるようになります。

ですのでサービスネットワークを一言で説明すると「VPCとサービスを結びつけてあげるリソース」となります。

またVPCとサービスを隔てる境界線と考えることもできます。VPCとサービスは適切に管理し関連付けをおこなってください。

Lattice(サービスネットワーク)を設計する際に注意すべき点

注意しなくてはならないのは、VPCが関連づけできるサービスネットワークが1つのみであるという点です。

サービスネットワークからは複数のVPCの関連付けを行うことができますが、VPCからはひとつのサービスネットワークのみにしか関連付けを行うことができません。

文章だけでは分かりづらいので図にしてみます。

まず「サービスネットワークからは複数のVPC」に関連づけするパターンです。

このパターンは問題なく関連付けが行えます。

次に「VPCからは複数のサービスネットワーク」に関連づけするパターンです。

このパターンはVPCが関連づけできるサービスネットワークが1つであるため設定できません。

上記の同アカウント内のパターンで利用を想定するケースは少なさそうですが、もっと想像しやすいようにクロスアカウントの例で考えてみたいと思います。

アカウントAのVPCから「共通アカウント」、「AAAシステム」といったアカウントそれぞれにあるAPIに対してLatticeを用いた接続を行いたいです。

「共通アカウント」、「AAAシステム」アカウントではアカウントA以外の複数のアカウントからのLatticeでの接続を行う要望があり、VPCの関連付けさえ行えば利用できるようにサービスネットワークまで準備しました。

イメージとしては以下のような構成です。

しかし、アカウントAでは「共通アカウント」「AAAシステム」と両方に接続が必要ですが、どちらかしか関連づけを行うことができず要件を達成できなくなってしまいました。

どうでしょうか?このようにアカウントを跨ぐと利用したいケースがありそうですが、このパターンは利用できませんので注意して設計するようにしてください。

設定項目について

それでは設定画面とともに設定内容について確認していきたいと思います。

サービスネットワークは設定項目が少ないので簡単に作成可能です。

識別子の設定

識別子の設定ですが、サービスネットワークの名前と説明の設定とタグの設定が可能です。

こちらは任意の名前の設定を行なってください。

注意点として、サービスネットワークの名前と説明部分が後から変更できませんのでこの点注意してください。

サービスの関連付け

関連付けしたいサービスを選択してください。

RAM(Resource Access Manager)を利用してサービスを共有することでクロスアカウントで関連付けを行うことができます。

新規作成時に共有していない場合は、この項目は後から変更できますのでなしで入力しても問題ありません。

後から変更する場合には、作成したサービスネットワークを選択して「アクション」ボタンから「サービスの関連付けを作成」を選択することでサービスの追加を行うことができます。

VPCの関連付けする

関連付けしたいVPCを選択してください。

こちらの項目では合わせてセキュリティグループの設定が行えます。

VPC毎にセキュリティグループを定義することができますので、適切な設定となるように設定を行なってください。

セキュリティグループの設定を行わないことも可能です。その場合セキュリティグループで通信の拒否は行われなくなります。

詳細な設定などについては詳しく解説をしておりますので、以下の記事をご参照ください。

認証設定の有無

こちらでIAM認証を行うかどうかの設定を行うことができます。

IAM認証を設定する際に必要な事項や詳細な設定などについては詳しく解説をしておりますので、以下の記事をご参照ください。

またIAM認証を設定するか、セキュリティグループの定義のみとするかの判断例を以下のブログで構成毎にまとめております。設定を決める際の参考としてください。

ログの設定

こちらではログの吐き出し有無と配信先の設定を行うことができます。

{
    "hostHeader": "example.com",
    "sslCipher": "-",
    "serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/svn-1a2b3c4d",
    "resolvedUser": "Unknown",
    "authDeniedReason": "null",
    "requestMethod": "GET",
    "targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1a2b3c4d",
    "tlsVersion": "-",
    "userAgent": "-",
    "serverNameIndication": "-",
    "destinationVpcId": "vpc-0abcdef1234567890",
    "sourceIpPort": "178.0.181.150:80",
    "targetIpPort": "131.31.44.176:80",
    "serviceArn": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-1a2b3c4d",
    "sourceVpcId": "vpc-0abcdef1234567890",
    "requestPath": "/billing",
    "startTime": "2023-07-28T20:48:45Z",
    "protocol": "HTTP/1.1",
    "responseCode": 200,
    "bytesReceived": 42,
    "bytesSent": 42,
    "duration": 375,
    "requestToTargetDuration": 1,
    "responseFromTargetDuration": 1,
    "grpcResponseCode": 1
}

配信先毎の考慮事項や出力ログの内容については以下リンクをご確認ください。

AWS公式ドキュメント

まとめ

サービスネットワークの概要と各設定項目と注意点について説明してきました。

設定としてはシンプルなのですが、VPCが関連づけるリソースが1つとなっているのでサービスネットワーク作成単位に注意が必要です。

またサービスネットワークはVPCとサービスを結びつけてくれますが、関連付けたVPC×関連付けたサービスで経路が増えていきます。経路がきちんと管理できるようにサービスネットワークを区切るまたは適切なIAM認証の設定を行いましょう。

この記事がLattice検討中のどなたかの参考になれば幸いです。

以上AWS事業部の木村でした。