Slide 1

Slide 1 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. クイズ形式で挑戦 ! AWS のアーキテクチャ改善を実践してみよう︕ 杉本 圭太 (Sugimoto Keita) H - 3 テクニカルトレーナー アマゾン ウェブ サービス ジャパン合同会社

Slide 2

Slide 2 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 杉本 圭太 (すぎもと けいた) AWS Technical Trainer • AWS の builders.flash というウェブマガジンで 定期的に記事を書いてます 📝 § https://aws.amazon.com/jp/builders-flash/ • 最近は AWS Summit Tokyo 2023 で AWS Jam を実施しました 🤘 § https://aws.amazon.com/jp/blogs/news/aws-jam-report-aws- summit-tokyo-2023/

Slide 3

Slide 3 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 概要 • 今回の⽬的とシナリオ • アーキテクチャの課題と改善案の検討 • まとめ

Slide 4

Slide 4 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 今回の⽬的とシナリオ

Slide 5

Slide 5 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 対象者と⽬的 対象者 : • CloudFront、S3、Lambda、VPC、ALB、RDS などを使⽤した システム開発に関わる⽅ (それぞれのサービスの基本知識はある) ⽬的 : • とあるシステムのアーキテクチャの現状に対して 「どんな課題があるか」や「どんな改善案があるか」を考えることで AWS のサービスや機能を必要性と使い所を意識してより理解する • 今まで知らなかった知識を 1 つでも新たに知る機会にして、 今後の活⽤を検討できるようにする § 今回の内容を全て知っていることは重要ではありません

Slide 6

Slide 6 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 今回のシナリオ • みなさんは数年前に AWS で設計されたシステムを担当することに なりました • システムの規模拡⼤やユーザー増加により、 構築時には気づかなかった課題が顕在化しています • AWS のサービスや機能のアップデートにより、 構築時にはなかった選択肢も増えています 構築時点では最善だと考えていたアーキテクチャを どのようにすればさらに改善できるか検討してみましょう !

Slide 7

Slide 7 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 とあるシステムの AWS アーキテクチャ: 改善前 AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Application Load Balancer (ALB) Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function

Slide 8

Slide 8 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. とあるシステムの AWS アーキテクチャの検討事項 それぞれの「課題」と「改善案」を順番に考えていきましょう ! ① CloudFront から ALB へのアクセス ② CloudFront から S3 へのアクセス ③ CloudFront のキャッシュ ④ ALB を配置するサブネット ⑤ ALB のターゲットふり分け ⑥ ALB へのプライベート接続 ⑦ Lambda 関数から RDS へのアクセス ⑧ AWS CLI で使⽤する認証情報 ※ 今回お伝えする改善案は課題に対する 1 つの⼿段なので、要件次第で適さないこともあります

Slide 9

Slide 9 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. アーキテクチャの課題と 改善案の検討

Slide 10

Slide 10 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ① CloudFront から ALB へのアクセス AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 ALB Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function

Slide 11

Slide 11 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 現状 現状: • ユーザーからは CloudFront 経由で ALB にアクセスさせる想定で、 ALB のセキュリティグループの インバウンドルールで ソースが 0.0.0.0/0 の許可を設定 ※構成図の抜粋 エッジから ALB へアクセスさせるために セキュリティグループを設定 Amazon CloudFront AWS WAF Users ALB

Slide 12

Slide 12 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 現状 現状: • ユーザーからは CloudFront 経由で ALB にアクセスさせる想定で、 ALB のセキュリティグループの インバウンドルールで ソースが 0.0.0.0/0 の許可を設定 ※構成図の抜粋 問 1-1 どんな課題が考えられますか ? エッジから ALB へアクセスさせるために セキュリティグループを設定 Amazon CloudFront AWS WAF Users ALB

Slide 13

Slide 13 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 課題 現状: • ユーザーからは CloudFront 経由で ALB にアクセスさせる想定で、 ALB のセキュリティグループの インバウンドルールで ソースが 0.0.0.0/0 の許可を設定 課題: • ALB へ直接アクセスができてしまうが、 CloudFront に AWS WAF の関連付けや キャッシュ設定があり、攻撃や負荷を 考えて ALB は CloudFront からのみ アクセスさせたい ※構成図の抜粋 Amazon CloudFront AWS WAF Users ALB ALB へ直接アクセスができてしまう

Slide 14

Slide 14 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 課題 現状: • ユーザーからは CloudFront 経由で ALB にアクセスさせる想定で、 ALB のセキュリティグループの インバウンドルールで ソースが 0.0.0.0/0 の許可を設定 課題: • ALB へ直接アクセスができてしまうが、 CloudFront に AWS WAF の関連付けや キャッシュ設定があり、攻撃や負荷を 考えて ALB は CloudFront からのみ アクセスさせたい ※構成図の抜粋 問 1-2 どんな改善案が考えられますか ? Amazon CloudFront AWS WAF Users ALB ALB へ直接アクセスができてしまう

Slide 15

Slide 15 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 改善案

Slide 16

Slide 16 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 改善案 AWS マネージドプレフィックスリストの使⽤

Slide 17

Slide 17 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ① CloudFront から ALB へのアクセス : 改善案 要点: • AWS マネージドプレフィックスリスト に⽤意されている CloudFront の IP アドレス範囲のリストを使えば、 セキュリティグループに CloudFront からのみアクセス許可する インバウンドルールを設定できる • AWS マネージドプレフィックスリスト は 2022 年 2 ⽉から CloudFront の IP アドレス範囲のリストをサポート ※構成図の抜粋 CloudFront が使⽤する IP アドレスを 気にせずにルールが設定できる Amazon CloudFront AWS WAF Users ALB AWS マネージドプレフィックスリストの使⽤

Slide 18

Slide 18 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ② CloudFront から S3 へのアクセス AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 19

Slide 19 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 現状 ※構成図の抜粋 Amazon CloudFront AWS WAF Users バケットポリシーの Principal に OAI で設定した ARN を指定 Amazon S3 Bucket 現状: • S3 ではバケットポリシーの設定に オリジンアクセスアイデンティティ (OAI) を使⽤して、バケットへのアクセスを CloudFront からのみに制限させている

Slide 20

Slide 20 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 現状 ※構成図の抜粋 Amazon CloudFront AWS WAF Users バケットポリシーの Principal に OAI で設定した ARN を指定 Amazon S3 Bucket 問 2-1 どんな課題が考えられますか ? 現状: • S3 ではバケットポリシーの設定に オリジンアクセスアイデンティティ (OAI) を使⽤して、バケットへのアクセスを CloudFront からのみに制限させている

Slide 21

Slide 21 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 課題 現状: • S3 ではバケットポリシーの設定に オリジンアクセスアイデンティティ (OAI) を使⽤して、バケットへのアクセスを CloudFront からのみに制限させている 課題: • OAI では対応していない以下の機能は 使⽤できない § AWS KMS を使⽤した S3 のサーバーサイド暗号化 (SSE-KMS) § S3 に対する PUT や DELETE など いくつかの HTTP メソッド ※構成図の抜粋 Amazon CloudFront AWS WAF Users SSE-KMS が必要になっても OAI では使⽤できない Amazon S3 Bucket

Slide 22

Slide 22 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 課題 ※構成図の抜粋 問 2-2 どんな改善案が考えられますか ? Amazon CloudFront AWS WAF Users SSE-KMS が必要になっても OAI では使⽤できない Amazon S3 Bucket 現状: • S3 ではバケットポリシーの設定に オリジンアクセスアイデンティティ (OAI) を使⽤して、バケットへのアクセスを CloudFront からのみに制限させている 課題: • OAI では対応していない以下の機能は 使⽤できない § AWS KMS を使⽤した S3 のサーバーサイド暗号化 (SSE-KMS) § S3 に対する PUT や DELETE など いくつかの HTTP メソッド

Slide 23

Slide 23 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 改善案

Slide 24

Slide 24 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 改善案 オリジンアクセスコントロール (OAC) の使⽤

Slide 25

Slide 25 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② CloudFront から S3 へのアクセス : 改善案 要点: • オリジンアクセスコントロール (OAC) を CloudFront で作成し、 S3 のバケットポリシーで OAC を 使⽤した条件にすると、 S3 オリジンへのアクセスを CloudFront のみに限定し保護できる • OAC は 2022 年 8 ⽉にリリースされ、 OAI と⽐べて S3 の SSE-KMS に対応 しているなど機能が強化されている ため、現在は OAC の使⽤が推奨 ※構成図の抜粋 CloudFront で OAC を作成し、 バケットポリシーで Condition を 使⽤して設定する AWS KMS Amazon CloudFront AWS WAF Users Amazon S3 Bucket オリジンアクセスコントロール (OAC) の使⽤

Slide 26

Slide 26 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ③ CloudFront のキャッシュ AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 27

Slide 27 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 現状 現状: • CloudFront でオリジンの設定を デフォルトのまま使⽤していて ⼀定の効果はあるが、世界中から アクセスするユーザーが増えたため、 使⽤されるエッジロケーションが 分散されるようになった ※構成図の抜粋 今までは⼀部の地域のエッジロケーション のみがユーザーからアクセスされていたが、 使⽤されるエッジも分散 Edge locations Regional edge cashes Users ALB S3 Bucket Origins Amazon CloudFront

Slide 28

Slide 28 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 現状 現状: • CloudFront でオリジンの設定を デフォルトのまま使⽤していて ⼀定の効果はあるが、世界中から アクセスするユーザーが増えたため、 使⽤されるエッジロケーションが 分散されるようになった ※構成図の抜粋 問 3-1 どんな課題が考えられますか ? 今までは⼀部の地域のエッジロケーション のみがユーザーからアクセスされていたが、 使⽤されるエッジも分散 Edge locations Regional edge cashes Users ALB S3 Bucket Origins Amazon CloudFront

Slide 29

Slide 29 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 課題 現状: • CloudFront でオリジンの設定を デフォルトのまま使⽤していて ⼀定の効果はあるが、世界中から アクセスするユーザーが増えたため 使⽤されるエッジロケーションが 分散されるようになった 課題: • リージョナルエッジキャッシュも 複数使⽤されるようになるため、 キャッシュヒット率の低下や オリジンの負荷増加の可能性が上がる ※構成図の抜粋 Edge locations Regional edge cashes Users ALB S3 Bucket Origins Amazon CloudFront 地理的に近いエッジのリクエストを統合する リージョナルエッジキャッシュも複数使⽤され、 オリジンへのリクエストもその分増加

Slide 30

Slide 30 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 課題 現状: • CloudFront でオリジンの設定を デフォルトのまま使⽤していて ⼀定の効果はあるが、世界中から アクセスするユーザーが増えたため 使⽤されるエッジロケーションが 分散されるようになった 課題: • リージョナルエッジキャッシュも 複数使⽤されるようになるため、 キャッシュヒット率の低下や オリジンの負荷増加の可能性が上がる ※構成図の抜粋 問 3-2 どんな改善案が考えられますか ? Edge locations Regional edge cashes Users ALB S3 Bucket Origins Amazon CloudFront 地理的に近いエッジのリクエストを統合する リージョナルエッジキャッシュも複数使⽤され、 オリジンへのリクエストもその分増加

Slide 31

Slide 31 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 改善案

Slide 32

Slide 32 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 改善案 Origin Shield の使⽤

Slide 33

Slide 33 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ③ CloudFront のキャッシュ : 改善案 要点: • CloudFront で Origin Shield を 設定すると、オリジンと リージョナルエッジキャッシュの間に キャッシュのレイヤーが追加され、 世界中にユーザーが分散している場合 などにオリジンの負荷軽減や キャッシュヒット率向上が⾒込める • 2020 年 10 ⽉にリリースされた機能で、 CloudFront を使⽤している場合は オリジンごとに数クリックで設定を 追加できる ※構成図の抜粋 Edge locations Regional edge cashes Users Amazon CloudFront Origin Shield ALB S3 Bucket Origins Origin Shield の使⽤ Origin Shield が追加されたことで 複数のリージョナルエッジキャッシュからの リクエストを統合し、オリジンの負荷を軽減

Slide 34

Slide 34 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ④ ALB を配置するサブネット AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 35

Slide 35 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 現状 現状: • パブリックサブネットに配置する リソースは多くないため、 CIDR ブロックを⼩さめにして VPC の IP アドレスを残すようにしている • 最近 ALB へのアクセスが増加している ※構成図の抜粋 Public subnet 10.0.0.16/28 Public subnet 10.0.0.0/28 ALB ENI ENI ALB は作成時に指定したサブネットへ Elastic Network Interface (ENI) が⽤意される

Slide 36

Slide 36 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 現状 現状: • パブリックサブネットに配置する リソースは多くないため、 CIDR ブロックを⼩さめにして VPC の IP アドレスを残すようにしている • 最近 ALB へのアクセスが増加している ※構成図の抜粋 Public subnet 10.0.0.16/28 Public subnet 10.0.0.0/28 ALB ENI ENI ALB は作成時に指定したサブネットへ Elastic Network Interface (ENI) が⽤意される 問 4-1 どんな課題が考えられますか ?

Slide 37

Slide 37 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 課題 ※構成図の抜粋 Public subnet 10.0.0.16/28 Public subnet 10.0.0.0/28 ALB ENI ENI ALB が使⽤する ENI、つまり IP アドレスの数 は⼀定ではないので注意が必要 現状: • パブリックサブネットに配置する リソースは多くないため、 CIDR ブロックを⼩さめにして VPC の IP アドレスを残すようにしている • 最近 ALB へのアクセスが増加している 課題: • ALB の仕様では少なくとも各サブネット につき 8 個の空き IP アドレスが必要 • サブネットの IP アドレスを使い果たすと ALB が正しくスケールされない場合が ある

Slide 38

Slide 38 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 課題 ※構成図の抜粋 Public subnet 10.0.0.16/28 Public subnet 10.0.0.0/28 ALB ENI ENI ALB が使⽤する ENI、つまり IP アドレスの数 は⼀定ではないので注意が必要 現状: • パブリックサブネットに配置する リソースは多くないため、 CIDR ブロックを⼩さめにして VPC の IP アドレスを残すようにしている • 最近 ALB へのアクセスが増加している 課題: • ALB の仕様では少なくとも各サブネット につき 8 個の空き IP アドレスが必要 • サブネットの IP アドレスを使い果たすと ALB が正しくスケールされない場合が ある 問 4-2 どんな改善案が考えられますか ?

Slide 39

Slide 39 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 改善案

Slide 40

Slide 40 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 改善案 ALB を配置するサブネットの CIDR ブロックは⼤きめに

Slide 41

Slide 41 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ④ ALB を配置するサブネット : 改善案 要点: • IP アドレスの空きに余裕がある サブネットに ALB を配置する • サブネットは作成後に CIDR ブロック を変更できないため、設計時から サブネットの CIDR ブロックは ⼤きめにしておく意識が必要 ※構成図の抜粋 ALB を配置するサブネットの CIDR ブロックは⼤きめに Public subnet 10.0.3.0/23 Public subnet 10.0.2.0/23 ALB ENI ENI /23 は例ですが、 できるだけ余裕を 持った設計を 公式ドキュメントの記載では “CIDR ブロックを最低でも /27 ビットマスク”

Slide 42

Slide 42 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ⑤ ALB のターゲットふり分け AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 43

Slide 43 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 現状 現状: • ロードバランシングアルゴリズムは デフォルト設定の「ラウンドロビン」 を使⽤している • 処理の時間や負荷が⼤幅に異なる リクエストが混在している ※構成図の抜粋 Container Container ALB Target group VPC ALB はデフォルトで ラウンドロビンの設定を使⽤

Slide 44

Slide 44 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 現状 現状: • ロードバランシングアルゴリズムは デフォルト設定の「ラウンドロビン」 を使⽤している • 処理の時間や負荷が⼤幅に異なる リクエストが混在している ※構成図の抜粋 問 5-1 どんな課題が考えられますか ? Container Container ALB Target group VPC ALB はデフォルトで ラウンドロビンの設定を使⽤

Slide 45

Slide 45 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 課題 現状: • ロードバランシングアルゴリズムは デフォルト設定の「ラウンドロビン」 を使⽤している • 処理の時間や負荷が⼤幅に異なる リクエストが混在している 課題: • 特定のインスタンスやコンテナに 負荷が偏ってもリクエストが均等に 分散されるため、場合によっては エラーやレスポンスタイムが 増えてしまうことがある ※構成図の抜粋 Container Container ALB Target group VPC 場合によっては処理負荷の⾼いリクエストが 集中して偏ってしまう可能性がある

Slide 46

Slide 46 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 課題 現状: • ロードバランシングアルゴリズムは デフォルト設定の「ラウンドロビン」 を使⽤している • 処理の時間や負荷が⼤幅に異なる リクエストが混在している 課題: • 特定のインスタンスやコンテナに 負荷が偏ってもリクエストが均等に 分散されるため、場合によっては エラーやレスポンスタイムが 増えてしまうことがある ※構成図の抜粋 問 5-2 どんな改善案が考えられますか ? Container Container ALB Target group VPC 場合によっては処理負荷の⾼いリクエストが 集中して偏ってしまう可能性がある

Slide 47

Slide 47 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 改善案

Slide 48

Slide 48 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 改善案 最⼩未処理リクエストアルゴリズムの使⽤

Slide 49

Slide 49 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑤ ALB のターゲットふり分け : 改善案 要点: • リクエストごとに処理負荷の差がある 場合や、ターゲットの処理能⼒に差が ある場合は最⼩未処理リクエストの アルゴリズムが有効 § ロードバランシングアルゴリズムで どれが適しているかはワークロード次第 • ロードバランシングアルゴリズムを ALB で変更したい場合は、 ターゲットグループ側の設定で ALB の設定を上書きする • 2019 年 11 ⽉に ALB で 最⼩未処理リクエストのサポート開始 ※構成図の抜粋 Container Container ALB Target group VPC 最⼩未処理リクエストアルゴリズムの使⽤ ターゲットグループは⼀度作成した後に ロードバランシングアルゴリズムの設定を 変更できる

Slide 50

Slide 50 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ⑥ ALB へのプライベート接続 AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 51

Slide 51 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 現状 現状: • 他の VPC からプライベート接続専⽤で ALB の機能を持つエンドポイントが 必要になったため、 ALB をプライベートサブネットに 作成して、AWS Transit Gateway や VPC ピアリングの使⽤を検討している ※構成図の抜粋 インターネットに公開しない ALB を⽤意し、 他の VPC 内のリソースから プライベート IP アドレスで接続したい VPC Service Provider VPC Private subnet Private subnet ALB Transit Gateway

Slide 52

Slide 52 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 現状 現状: • 他の VPC からプライベート接続専⽤で ALB の機能を持つエンドポイントが 必要になったため、 ALB をプライベートサブネットに 作成して、AWS Transit Gateway や VPC ピアリングの使⽤を検討している ※構成図の抜粋 インターネットに公開しない ALB を⽤意し、 他の VPC 内のリソースから プライベート IP アドレスで接続したい 問 6-1 どんな課題が考えられますか ? VPC Service Provider VPC Private subnet Private subnet ALB Transit Gateway

Slide 53

Slide 53 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 課題 現状: • 他の VPC からプライベート接続専⽤で ALB の機能を持つエンドポイントが 必要になったため、 ALB をプライベートサブネットに 作成して、AWS Transit Gateway や VPC ピアリングの使⽤を検討している 課題: • IP アドレスが重複するサブネットから ALB のプライベート IP へ接続できない ※構成図の抜粋 VPC Service Provider VPC Private subnet Private subnet ALB Transit Gateway プライベートサブネット同⼠で IP アドレスの 重複を避けるのが難しい場合もある

Slide 54

Slide 54 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 課題 現状: • 他の VPC からプライベート接続専⽤で ALB の機能を持つエンドポイントが 必要になったため、 ALB をプライベートサブネットに 作成して、AWS Transit Gateway や VPC ピアリングの使⽤を検討している 課題: • IP アドレスが重複するサブネットから ALB のプライベート IP へ接続できない ※構成図の抜粋 問 6-2 どんな改善案が考えられますか ? VPC Service Provider VPC Private subnet Private subnet ALB Transit Gateway プライベートサブネット同⼠で IP アドレスの 重複を避けるのが難しい場合もある

Slide 55

Slide 55 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 改善案

Slide 56

Slide 56 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 改善案 Network Load Balancer (NLB) と AWS PrivateLink の使⽤

Slide 57

Slide 57 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑥ ALB へのプライベート接続 : 改善案 VPC ALB Service Provider VPC NLB VPC endpoint AWS PrivateLink HTTP ヘッダやクエリ⽂字列、パスベースなど ALB のルーティング機能を持った プライベートなエンドポイントを提供可能 ※構成図の抜粋 Private subnet Private subnet 要点: • Network Load Balancer (NLB) を VPC エンドポイントサービスにすると AWS PrivateLink で他 VPC へ IP アドレスの重複を考慮しない プライベート接続を提供できる • 2021 年 9 ⽉に NLB のターゲットに ALB を登録できるようになったため、 プライベートなエンドポイントで ALB の⾼度なルーティングも使⽤可能 § ALB のエンドポイントの IP アドレスを 固定したい場合にも NLB との連携が使える Network Load Balancer (NLB) と AWS PrivateLink の使⽤

Slide 58

Slide 58 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ⑦ Lambda 関数から RDS へのアクセス AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 59

Slide 59 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 現状 現状: • 新たに RDS へ接続する処理が必要に なり、呼び出し量は今後増加予定かつ スパイクも予想されるため、 RDS へ直接接続する Lambda 関数で 処理を⾃動スケールできるようにした ※構成図の抜粋 Lambda 関数で VPC の設定をすると、 指定したサブネット内に Lambda 関数⽤の ENI が⽤意され、 それを通して VPC 内のリソースへ接続できる Amazon RDS Lambda function VPC Private subnet

Slide 60

Slide 60 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 現状 現状: • 新たに RDS へ接続する処理が必要に なり、呼び出し量は今後増加予定かつ スパイクも予想されるため、 RDS へ直接接続する Lambda 関数で 処理を⾃動スケールできるようにした ※構成図の抜粋 Lambda 関数で VPC の設定をすると、 指定したサブネット内に Lambda 関数⽤の ENI が⽤意され、 それを通して VPC 内のリソースへ接続できる 問 7-1 どんな課題が考えられますか ? Amazon RDS Lambda function VPC Private subnet

Slide 61

Slide 61 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 課題 現状: • 新たに RDS へ接続する処理が必要に なり、呼び出し量は今後増加予定かつ スパイクも予想されるため、 RDS へ直接接続する Lambda 関数で 処理を⾃動スケールできるようにした 課題: • Lambda 関数の同時実⾏数が 増加すると、RDS への接続数が増えて 過負荷の原因や最⼤接続数を超過して 接続エラーになる可能性がある ※構成図の抜粋 Amazon RDS Lambda function VPC Private subnet Lambda 関数は必要に応じて実⾏環境が ⽤意されるため、 その都度 DB へコネクションを作成する

Slide 62

Slide 62 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 課題 現状: • 新たに RDS へ接続する処理が必要に なり、呼び出し量は今後増加予定かつ スパイクも予想されるため、 RDS へ直接接続する Lambda 関数で 処理を⾃動スケールできるようにした 課題: • Lambda 関数の同時実⾏数が 増加すると、RDS への接続数が増えて 過負荷の原因や最⼤接続数を超過して 接続エラーになる可能性がある ※構成図の抜粋 問 7-2 どんな改善案が考えられますか ? Amazon RDS Lambda function VPC Private subnet Lambda 関数は必要に応じて実⾏環境が ⽤意されるため、 その都度 DB へコネクションを作成する

Slide 63

Slide 63 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 改善案

Slide 64

Slide 64 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 改善案 Amazon RDS Proxy の使⽤

Slide 65

Slide 65 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 改善案 要点: • RDS Proxy はコネクションプールを 確⽴および管理し、アプリケーション から RDS への接続を少なく抑える • Lambda 関数から RDS Proxy の エンドポイントへ接続させると、 実⾏環境ごとに RDS コネクションを 作成せずに済むためため、 RDS の接続数がパフォーマンスに 影響ある場合などに効果的 § Lambda 関数で RDS へ接続する場合に必須 ということでは無い ※構成図の抜粋 Amazon RDS Lambda function RDS Proxy VPC Private subnet Amazon RDS Proxy の使⽤ Proxy エンドポイントは、指定したサブネッ トに⽤意された ENI の IP アドレスを返す RDS の接続先の設定を Proxy エンドポイント に変更するだけで使⽤できる

Slide 66

Slide 66 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 ⑧ AWS CLI で使⽤する認証情報 AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function ALB

Slide 67

Slide 67 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 現状 現状: • 開発者は AWS CLI の認証情報に IAM ユーザーのアクセスキーを 使⽤している ※構成図の抜粋 IAM User Access Key AWS Cloud Developer AWS CLI Amazon S3 Amazon ECS IAM ユーザーを作成して発⾏した ⻑期的な認証情報であるアクセスキーを使⽤ AWS Identity and Access Management (IAM)

Slide 68

Slide 68 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 現状 現状: • 開発者は AWS CLI の認証情報に IAM ユーザーのアクセスキーを 使⽤している ※構成図の抜粋 問 8-1 どんな課題が考えられますか ? IAM User Access Key AWS Cloud Developer AWS CLI Amazon S3 Amazon ECS IAM ユーザーを作成して発⾏した ⻑期的な認証情報であるアクセスキーを使⽤ AWS Identity and Access Management (IAM)

Slide 69

Slide 69 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 課題 現状: • 開発者は AWS CLI の認証情報に IAM ユーザーのアクセスキーを 使⽤している 課題: • 現在 AWS では必要な場合を除き IAM ユーザーで⻑期的な認証情報を 使⽤することは避け、できる限り IAM ロールで⼀時的な認証情報を 使⽤することが推奨されている • マルチアカウントを使⽤する場合では アカウントごとに認証情報の管理が必要 ※構成図の抜粋 IAM User Access Key AWS Cloud Developer AWS CLI Amazon S3 Amazon ECS ⻑期的な認証情報は定期的なローテーション が推奨など、管理に⼿間がかかる AWS Identity and Access Management (IAM)

Slide 70

Slide 70 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 課題 ※構成図の抜粋 IAM User Access Key AWS Cloud Developer AWS CLI Amazon S3 Amazon ECS AWS Identity and Access Management (IAM) 問 8-2 どんな改善案が考えられますか ? 現状: • 開発者は AWS CLI の認証情報に IAM ユーザーのアクセスキーを 使⽤している 課題: • 現在 AWS では必要な場合を除き IAM ユーザーで⻑期的な認証情報を 使⽤することは避け、できる限り IAM ロールで⼀時的な認証情報を 使⽤することが推奨されている • マルチアカウントを使⽤する場合では アカウントごとに認証情報の管理が必要 ⻑期的な認証情報は定期的なローテーション が推奨など、管理に⼿間がかかる

Slide 71

Slide 71 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 改善案

Slide 72

Slide 72 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 改善案 AWS CLI の認証に AWS IAM Identity Center の使⽤

Slide 73

Slide 73 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Temporary credential ⑧ AWS CLI で使⽤する認証情報 : 改善案 要点: • AWS IAM Identity Center を 使⽤すると IAM ユーザーを作成せず IAM ロールで AWS CLI も操作できる § 管理する認証情報は IAM Identity Center のユーザー 1 つのみ § IAM Identity Center を使⽤するためには AWS Organizations が必要 • AWS CLI の config ファイルに IAM Identity Center の URL や 使⽤する IAM ロールを指定するだけ • 2020 年 2 ⽉に⼀般利⽤可能になった AWS CLI version 2 で使⽤できる ※構成図の抜粋 AWS Cloud Developer AWS CLI Amazon S3 Amazon ECS Role aws sso login のコマンドを実⾏し、 ブラウザで IAM Identity Center の ユーザー情報で認証すれば OK AWS CLI の認証に AWS IAM Identity Center の使⽤ AWS IAM Identity Center

Slide 74

Slide 74 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ

Slide 75

Slide 75 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.0.16/28 とあるシステムの AWS アーキテクチャ: 改善前 AWS Cloud Region VPC Public subnet 10.0.0.0/28 Private subnet Amazon CloudFront Amazon Route 53 Application Load Balancer (ALB) Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI IAM User Access Key Lambda function

Slide 76

Slide 76 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Public subnet 10.0.3.0/23 とあるシステムの AWS アーキテクチャ: 改善後 AWS Cloud Region VPC Public subnet 10.0.2.0/23 Private subnet Amazon CloudFront Amazon Route 53 Amazon RDS (Writer) Container Internet gateway Amazon S3 Bucket Private subnet Amazon RDS (Reader) Container AWS WAF Users Developer AWS CLI Lambda function RDS Proxy RDS Proxy ALB Lambda function Lambda function NLB ALB Temporary credential ③ Origin Shield ② OAC ① AWS マネージドプレフィックスリスト ④ ALB のサブネットの CIDR ブロック ⑤ ロードバランシングアルゴリズム ⑥ NLB と ALB の連携 ⑦ RDS Proxy ⑧ AWS CLI の認証 AWS IAM Identity Center

Slide 77

Slide 77 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⽬的の確認 ⽬的 : • とあるシステムのアーキテクチャの現状に対して 「どんな課題があるか」や「どんな改善案があるか」を考えることで AWS のサービスや機能を必要性と使い所を意識してより理解する • 今まで知らなかった知識を 1 つでも新たに知る機会にして、 今後の活⽤を検討できるようにする § 今回の内容を全て知っていることは重要ではありません

Slide 78

Slide 78 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 最後に伝えたいこと • AWS のサービスや機能は⽇々アップデートされ システムの規模やユーザー数によって要件や課題が変わってくるため 最善な AWS アーキテクチャは時間の経過によって変わる § アーキテクチャは定期的な⾒直しも⼤事 ! • 今回紹介した改善案が効果的かどうかは要件次第であるため 課題解決のための 1 つの⼿段として考えておく § サービスや機能を使⽤することが⽬的になって先⾏するのではなく、 まずはシステムにどんな要件や課題があるのかを把握することが重要 ! § 新しサービスや機能を使⽤する場合はドキュメントの確認や動作のテスト、 パフォーマンスの測定などは忘れずに !

Slide 79

Slide 79 text

© 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Thank you! © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 杉本 圭太 (Sugimoto Keita)