Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon VPC Lattice を使い始める前におさえておきたいポイント n 選 / I...

hayao_k
May 24, 2023

Amazon VPC Lattice を使い始める前におさえておきたいポイント n 選 / Introduction to VPC Lattice

Qiita Night~AWS vol.2~ の LT 資料です

hayao_k

May 24, 2023
Tweet

More Decks by hayao_k

Other Decks in Technology

Transcript

  1. Me • Cloud Engineer @ セゾン情報システムズ • AWS Community Builder

    • 2019 - 2023 Japan AWS Top Engineer • 12x AWS Certified 2 @hayaok3 @hayao_k
  2. 1. VPC Lattice が登場した背景 2. VPC Lattice の主要コンポーネント 3. クロスアカウントでの利用方法

    Appendix. EKS クラスターと VPC Lattice の接続, セキュリティ, モニタリング, Pricing 3
  3. 4

  4. • L7 レイヤのネットワーキングサービス (2023/3/31 GA) • サービス間通信の接続、セキュリティ、モニタリングをシンプルに実現する • HTTP 1.1/2.0

    または gRPC での通信をサポート 6 Account 1 VPC Service A Account 2 Amazon VPC Lattice VPC Service A VPC Service C Amazon ECS Elastic Load Balancing
  5. 7

  6. Service • サービス: EC2 / コンテナ / Lambda 関数等で動作するマイクロサービスの単位 •

    リスナー、ルール、ターゲットグループから構成される • サービスネットワーク: サービスの集合としての論理的な境界 • サービスはサービスネットワークに関連付けることでクライアントから利用可能に (Service association) 8 VPC Lattice Service Network Listener HTTPS:443 Rule1: /path1 Rule2: /path2 Target groups Group 1 Group 2 ・ ・ ・ Group 3 ・ ・ ・ Amazon EC2 VPC Client Weight: 60 Weight: 40 Amazon ECS
  7. Service 1 • クライアントとなる VPC をサービスネットワークに関連付ける (VPC association) • VPC

    同士は CIDR の重複が可能 • サービス間の相互通信が必要な場合、各 VPC をサービスネットワークに接続する必要がある 9 VPC Lattice Service Network VPC 2 10.1.0.0/16 Service 2 VPC 3 10.1.0.0/16 VPC 1 10.1.0.0/16 Client Service 2 Service 3 Service1 Service 3 Association Association Association 1 つのサービスネットワークには多数の VPC を関連付けできる 1 つの VPC は 1 つのサービスネットワークに関連付けできる 1 つのサービスは多数のサービスネットワークに関連付けできる Service 2 と 3 が相互に通信する場合は VPC 2 と 3 もサービスネットワークに関連付けが必要
  8. Service デフォルト DNS 名 or カスタムドメイン名 • サービスに払い出された DNS 名を使用してアクセス

    (カスタムドメインも設定可能) • サービスの DNS 名はリンクローカルアドレス (169.254.171.0/24) で解決される • インターネットやオンプレミスからのアクセスはできない 10 VPC Lattice Service Network VPC Client VPC Service Amazon Route 53 service.example.com 169.254.171.23 VPC をサービスネットワークに関連付けると、ルートテーブルに サービスネットワークへのルートが自動で設定される カスタムドメインを使用する場合は、 デフォルト DNS 名をCNAME レコードとして登録する
  9. • インスタンス • EC2 インスタンスまたは Auto Scaling グループを登録可能 • IP

    アドレス • VPC 内の IP アドレスを指定する • Internal NLB を指定したい場合は IP アドレスターゲットを利用する • AWS Gateway API Controller により Kubernetes Pod を登録可能 • Lambda 関数 • VPC Lambda / 非 VPC Lambda どちらも可 • Application Load Balancer (Internal) 11
  10. 12

  11. • AWS Resource Access Manager (RAM) で他アカウントに共有する • サービスおよびサービスネットワークを共有可能 •

    サービスネットワーク管理用のアカウントをたてるのがよさそう 13 Account 1 VPC Lattice Service Network Service 1 Service 2 (Shared) VPC 1 Service 1 Account 2 Service 2 Account 3 VPC Lattice Service Network (Shared) VPC 2 Service 2 AWS RAM VPC 3 Client Association
  12. • Amazon VPC Lattice の嬉しいところ • サービス間通信の接続、セキュリティ、モニタリングをシンプルに実現する • VPC 同士の接続において

    CIDR を考慮する必要がない • インターネット/オンプレミスからの接続はできない • 外部システムとの接続では引き続き PrivateLink などが活躍する • セキュリティ、モニタリングについては Appendix. を参照 14
  13. 15

  14. • AWS Gateway API Controller をクラスターに導入する • クラスター上で Gateway API

    リソースが作成されると、対応する VPC Lattice オブジェクトを作成 16 Service 1 VPC Lattice Service Network Service 2 VPC 1 Service 1 Service 3 Service 4 VPC 3 Service 3 VPC 2 Service 2 VPC 4 Service 4 AWS ブログより引用
  15. • 認証タイプ (AWS_IAM) と認証ポリシー • サービスおよびサービスネットワークに設定可 (デフォルト無効) • 指定した認証ポリシーと IAM

    エンティティのポリシーに基づいて リクエストが認証される • セキュリティグループ • VPC を サービスネットワーク に関連付ける際にセキュリティ グループを指定可能 • ルールのソースに VPC Lattice のリンクローカルアドレス範囲を 指定する際は AWS Managed Prefix リストを活用できる • com.amazonaws.<region>.vpc-lattice 17 認証ポリシーの例: 特定の VPC-ID かつ認証されたリクエストのみを許可 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "vpc-lattice-svcs:Invoke", "Resource": "*", "Condition": { "StringNotEquals": { "aws:PrincipalType":"Anonymous" }, "StringEquals":{ "vpc-lattice-svcs:SourceVpc":"vpc-1a2b3c4d" } } } ] }
  16. アクセスログの例: { "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-1234789", "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-1234578", "requestPath": "/billing", "startTime": "2021-07-28T20:48:45Z", "protocol": "HTTP/1.1", "responseCode": 200, "bytesReceived": 42, "bytesSent": 42, "duration": 375, "requestToTargetDuration": 1, "responseFromTargetDuration": 1 } • アクセスログ • CloudWatch Logs / S3 / Kinesis Data Firehose への出力に対応 • サービスおよびサービスネットワークに対し個別にログの 出力設定ができる • サービスネットワークレベルではアーカイブ用途で S3 に 出力し、特定のサービスのみ調査用途で CloudWatch Logs にも出力するといった設定も可能 • CloudWatch メトリクス • https://docs.aws.amazon.com/ja_jp/vpc- lattice/latest/ug/monitoring-cloudwatch.html 18
  17. • サービス • $0.0325/Service/Hour • データ処理 • $0.0325/GB • リクエスト

    • $0.13/Per 1 million requests • 1 時間あたり最初の 300,000 リクエストは無料 ※ 東京リージョン 2023/5 時点 19
  18. • Introducing Amazon VPC Lattice: Simplifying application networking (NET215) •

    https://d1.awsstatic.com/events/Summits/reinvent2022/NET215_NEW-LAUNCH!-Introducing-Amazon-VPC- Lattice-Simplifying-application-networking.pdf • Build secure multi-account multi-VPC connectivity for your applications with Amazon VPC Lattice • https://aws.amazon.com/jp/blogs/networking-and-content-delivery/build-secure-multi-account-multi-vpc- connectivity-for-your-applications-with-amazon-vpc-lattice/ • Amazon VPC Lattice と AWS Gateway API コントローラーのご紹介:Kubernetes Gateway API の実装 • https://aws.amazon.com/jp/blogs/news/introducing-aws-gateway-api-controller-for-amazon-vpc-lattice-an- implementation-of-kubernetes-gateway-api/ • Amazon VPC Lattice Workshop • https://catalog.workshops.aws/handsonwithvpclattice/ 20