Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

• 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

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

• 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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

• 認証タイプ (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" } } } ] }

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

• 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