$30 off During Our Annual Pro Sale. View Details »

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

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. を使い始める前に
    おさえておきたいポイント n 選
    Qiita Night~AWS vol.2~
    May 24th, 2023
    小杉 隼人 | Hayato Kosugi

    View Slide

  2. Me
    • Cloud Engineer @ セゾン情報システムズ
    • AWS Community Builder
    • 2019 - 2023 Japan AWS Top Engineer
    • 12x AWS Certified
    2
    @hayaok3 @hayao_k

    View Slide

  3. 1. VPC Lattice が登場した背景
    2. VPC Lattice の主要コンポーネント
    3. クロスアカウントでの利用方法
    Appendix.
    EKS クラスターと VPC Lattice の接続, セキュリティ, モニタリング, Pricing
    3

    View Slide

  4. 4

    View Slide

  5. AWS PrivateLink
    • マイクロサービス化によるサービス間通信の課題は多岐にわたる
    • 疎通性の確保、ロードバランシング、認証・認可、オブザーバービリティなど
    • 前提となる技術スタックが多く、構成が複雑に
    5
    Account 1
    VPC
    Service A
    Account 2
    VPC
    Service B
    AWS Transit Gateway
    AWS App Mesh
    AWS Cloud Map
    Elastic Load
    Balancing
    VPC Peering
    VPC
    Service C
    Amazon ECS

    View Slide

  6. • 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

    View Slide

  7. 7

    View Slide

  8. 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

    View Slide

  9. 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 もサービスネットワークに関連付けが必要

    View Slide

  10. 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 レコードとして登録する

    View Slide

  11. • インスタンス
    • 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

    View Slide

  12. 12

    View Slide

  13. • 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

    View Slide

  14. • Amazon VPC Lattice の嬉しいところ
    • サービス間通信の接続、セキュリティ、モニタリングをシンプルに実現する
    • VPC 同士の接続において CIDR を考慮する必要がない
    • インターネット/オンプレミスからの接続はできない
    • 外部システムとの接続では引き続き PrivateLink などが活躍する
    • セキュリティ、モニタリングについては Appendix. を参照
    14

    View Slide

  15. 15

    View Slide

  16. • 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 ブログより引用

    View Slide

  17. • 認証タイプ (AWS_IAM) と認証ポリシー
    • サービスおよびサービスネットワークに設定可 (デフォルト無効)
    • 指定した認証ポリシーと IAM エンティティのポリシーに基づいて
    リクエストが認証される
    • セキュリティグループ
    • VPC を サービスネットワーク に関連付ける際にセキュリティ
    グループを指定可能
    • ルールのソースに VPC Lattice のリンクローカルアドレス範囲を
    指定する際は AWS Managed Prefix リストを活用できる
    • com.amazonaws..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"
    }
    }
    }
    ]
    }

    View Slide

  18. アクセスログの例:
    {
    "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

    View Slide

  19. • サービス
    • $0.0325/Service/Hour
    • データ処理
    • $0.0325/GB
    • リクエスト
    • $0.13/Per 1 million requests
    • 1 時間あたり最初の 300,000 リクエストは無料
    ※ 東京リージョン 2023/5 時点
    19

    View Slide

  20. • 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

    View Slide