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

クイズ形式で挑戦 ! AWS のアーキテクチャ改善を実践してみよう !

クイズ形式で挑戦 ! AWS のアーキテクチャ改善を実践してみよう !

AWS Dev Day 2023 の発表資料

sugikeitter

June 23, 2023
Tweet

Other Decks in Technology

Transcript

  1. © 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 テクニカルトレーナー アマゾン ウェブ サービス ジャパン合同会社
  2. © 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/
  3. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

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

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

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

    rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. アーキテクチャの課題と 改善案の検討
  10. © 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
  11. © 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
  12. © 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
  13. © 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 へ直接アクセスができてしまう
  14. © 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 へ直接アクセスができてしまう
  15. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ① CloudFront から ALB へのアクセス : 改善案 AWS マネージドプレフィックスリストの使⽤
  17. © 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 マネージドプレフィックスリストの使⽤
  18. © 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
  19. © 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 からのみに制限させている
  20. © 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 からのみに制限させている
  21. © 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
  22. © 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 メソッド
  23. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ② CloudFront から S3 へのアクセス : 改善案 オリジンアクセスコントロール (OAC) の使⽤
  25. © 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) の使⽤
  26. © 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
  27. © 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
  28. © 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
  29. © 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 地理的に近いエッジのリクエストを統合する リージョナルエッジキャッシュも複数使⽤され、 オリジンへのリクエストもその分増加
  30. © 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 地理的に近いエッジのリクエストを統合する リージョナルエッジキャッシュも複数使⽤され、 オリジンへのリクエストもその分増加
  31. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ③ CloudFront のキャッシュ : 改善案 Origin Shield の使⽤
  33. © 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 が追加されたことで 複数のリージョナルエッジキャッシュからの リクエストを統合し、オリジンの負荷を軽減
  34. © 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
  35. © 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) が⽤意される
  36. © 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 どんな課題が考えられますか ?
  37. © 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 が正しくスケールされない場合が ある
  38. © 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 どんな改善案が考えられますか ?
  39. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ④ ALB を配置するサブネット : 改善案 ALB を配置するサブネットの CIDR ブロックは⼤きめに
  41. © 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 ビットマスク”
  42. © 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
  43. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

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

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

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

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

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

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

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

    rights reserved. ⑥ ALB へのプライベート接続 : 改善案 Network Load Balancer (NLB) と AWS PrivateLink の使⽤
  57. © 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 の使⽤
  58. © 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
  59. © 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
  60. © 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
  61. © 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 へコネクションを作成する
  62. © 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 へコネクションを作成する
  63. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ⑦ Lambda 関数から RDS へのアクセス : 改善案 Amazon RDS Proxy の使⽤
  65. © 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 エンドポイント に変更するだけで使⽤できる
  66. © 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
  67. © 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)
  68. © 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)
  69. © 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)
  70. © 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 ロールで⼀時的な認証情報を 使⽤することが推奨されている • マルチアカウントを使⽤する場合では アカウントごとに認証情報の管理が必要 ⻑期的な認証情報は定期的なローテーション が推奨など、管理に⼿間がかかる
  71. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

    rights reserved. ⑧ AWS CLI で使⽤する認証情報 : 改善案 AWS CLI の認証に AWS IAM Identity Center の使⽤
  73. © 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
  74. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ
  75. © 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
  76. © 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
  77. © 2023, Amazon Web Services, Inc. or its affiliates. All

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

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