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

第3回_AWSアーキテクチャに関する勉強会/aws_architecture_study_se...

Renya K.
April 17, 2025
1

 第3回_AWSアーキテクチャに関する勉強会/aws_architecture_study_session_3

生成 AI 実用化推進プログラムに参画して得られたノウハウの共有です.

Renya K.

April 17, 2025
Tweet

Transcript

  1. © 2025 NTT DATA Japan Corporation 2 目次 • はじめに

    • 背景・目的・狙い • 構築した AWS アーキテクチャ • 前回の復習 • AWSリソース(認証・セキュリティ・IaC) • Cognito • Secret Manager • WAF • CloudFormation • CDK
  2. © 2025 NTT DATA Japan Corporation 4 背景・目的・狙い 背景 2024

    年度の AWS 生成 AI 実用化推進プログラムに参画した.本プログラムでは,AI Agent によるソリューションを AWS 上で開発し,実際に顧客に Web アプリケーションとして無料トライアル提供した. 目的 本勉強会では,本取り組みを通して得られたAWSに関するナレッジについて共有する. 狙い 各サービスの基本知識と AWS コンソール上でのサービスの確認方法をセットで理解すること.
  3. © 2025 NTT DATA Japan Corporation 5 構築した AWS アーキテクチャ

    (1/2) Streamlit のアプリケーションを ECS でコンテナとして実行し,ネットワークの前段に ALB を配置して,AI Agent ソリューションを インターネット経由でWeb アプリケーションとして配信するためのアーキテクチャを実装した.これらを CDK で IaC 化している. AWS CDK
  4. © 2025 NTT DATA Japan Corporation 6 構築した AWS アーキテクチャ

    (2/2) (1)ネットワーク,(2) コンテナ運用・データベース,(3) 認証・セキュリティ・IaCに大別して,勉強会では解説する. 可能な限り,コンソール画面を共有しながらサービスについての理解を深めていく. (1) ネットワーク (2) コンテナ運用・データベース AWS CDK (3) 認証・セキュリティ・IaC
  5. © 2025 NTT DATA Japan Corporation 7 前回の復習 Fargate on

    ECS 上で, Streamlit によるアプリケーションをコンテナ (ECS Task) で実行している. アプリケーションの Docker イメージは ECR に保存し,ECR のイメージを更新 するタイミングで ECS Task を更新する. 会話履歴は DynamoDB 上で管理し,LangGraph のステートは RDS で管理している. Amazon RDS ACM NAT gateway DynamoDB S3 ECR 会話履歴・生成画像を保存 LangGraphのステートを管理 Dockerイメージを管理 Streamlit のコンテナを実行
  6. © 2025 NTT DATA Japan Corporation 9 Cognito (概要) API

    ベースで実装されるモバイルアプリや Web アプリにユーザ認証機能を提供するサービス. 認証にはユーザープールを,認可には ID プール 利用する. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf 認証(本人確認) 認可(アクセス権限付与)
  7. © 2025 NTT DATA Japan Corporation 10 Cognito (ユーザープールの仕組み) ユーザープールにユーザーを作成することで,そのユーザーはCognitoでサインインできる.主にサインインに利用される情報は,

    ユーザー名とパスワード.ユーザー作成時,そのユーザーのメアド宛に初期パスワードを自動送信可能. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf 作成された Cognito ユーザーは, 初期パスワードを1週間以内に変更し, サインインする必要がある.
  8. © 2025 NTT DATA Japan Corporation 11 Cognito (Cognito 連携時の認証フロー)

    アプリケーションにアクセスすると,Cognito のサインイン画面にリダイレクトし,サインインに成功すると,アプリケーション画面に リダイレクトするように設定する(ことが多い). リダイレクトの設定は, ALBで行うことが可能 コンソール上で, マネージドログイン -> スタイル -> ログインページを表示 でも,ログインページにアクセスすることが可能. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf
  9. © 2025 NTT DATA Japan Corporation 12 Secret Manager (概要)

    シークレット情報(パスワード、データベース認証情報、API キー等)を、暗号化された安全なストレージに保管できるサービス. RDS などのシークレットは,自動ローテーション(更新)することも可能. • 暗号化された安全なストレージに保管 • 別リージョンへの自動レプリケーション • AWS SDK などのライブラリと統合されており、 プログラムから簡単に利用可能 • IAM を用いたシークレット情報へのアクセス制御 • ⼿動・自動ローテーションが可能、プログラムの書き換え は不要 • AWS CloudTrail などによる利用状況のモニタリングと監査 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-Secrets-Manager_0901_v1.pdf
  10. © 2025 NTT DATA Japan Corporation 13 Secret Manager (Tips)

    シークレットは Key-Value 形式で管理する.コンソール画面で「プレーンテキスト」を選択すると,Json 形式で閲覧・コピーする ことが可能.
  11. © 2025 NTT DATA Japan Corporation 14 WAF (Web Application

    Firewallの概要) Web アプリケーションの通信内容を検査し,不正なアクセスを遮断するマネージドファイアウォールサービス. 主な機能として,SQL インジェクション/XSS/BOT 対策,IP ブラックリスト/ホワイトリスト,レートリミットなどを提供している. https://d1.awsstatic.com/webinars/jp/pdf/services/20200324_AWS_BlackBelt_AWS_WAF_Update.pdf 攻撃から Web アプリケーションを保護 https://yamamototis1105.hatenablog.com/entry/2025/01/31/125400
  12. © 2025 NTT DATA Japan Corporation 15 WAF (WAF の仕組み)

    WAF は,単一もしくは複数の Web ACLs を持つ.Web ACLs は、一つ以上のセキュリティの設定 (Rule Groups や Rule) から構成され,単一のALB や CloudFront にアタッチできる. https://yamamototis1105.hatenablog.com/entry/2025/01/31/125400 ルールのセット (Rule Groups) や ルール (Rule) を設定可能
  13. © 2025 NTT DATA Japan Corporation 16 WAF (Managed Rule

    Groups) AWS は様々な既知の脅威に対する一般的な対策ルールを Managed Rule Groups として提供している. 以下の Managed Rule Groups を追加しておけば,基本的には問題ない.(私見) https://d1.awsstatic.com/webinars/jp/pdf/services/202203_AWS_Black_Belt_AWS_Managed_Rules_for_AWS_WAF.pdf # Managed Rule Groups 説明 1 AWSManagedRulesAmazonIpReputationList ボットやその他の脅威に関連づけられている IP アドレスをブロックする,Amazon 内部の 脅威インテリジェンスに基づくルールグループ. 2 AWSManagedRulesCommonRuleSet 一般的な Web アプリケーションの脆弱性への攻撃を防ぐためのルールグループ. リクエストボディが 16KB を超過する場合,通信がブロックされるため注意. 3 AWSManagedRulesKnownBadInputsRuleSet 無効であることがわかっており,脆弱性の悪用または探索に関連するリクエストパターンを ブロックするルールグループ. 4 AWSManagedRulesLinuxRuleSet Linux 固有のローカルファイルインクルージョン (LFI) 攻撃など,Linux 固有の脆弱性の 悪用に関連するリクエストパターンをブロックするルールグループ. 5 AWSManagedRulesAnonymousIpList VPN,プロキシ,Tor ノード,ホスティングプロバイダー などのビューワー ID の難読化を 許可するサービスからのリクエストをブロックするルール 6 AWSManagedRulesATPRuleSet ログインページに対する不正なアクセスから保護するためのルールグループ.有料. https://mazyu36.hatenablog.com/entry/2023/02/21/191736
  14. © 2025 NTT DATA Japan Corporation 17 WAF (セキュリティグループとの違い) WAF

    はL7 (アプリケーション層) で動作する Firewall であり,SG は L3-L4 (ネットワーク層,トランスポート層)で動作する Firewall である.WAF はプロトコル (HTTP/SSH) を,SG はポート番号 (80, 20) と IP アドレスをチェックする. https://d1.awsstatic.com/webinars/jp/pdf/services/BlackBelt202106_AWS_Network_Firewall_Basic.pdf
  15. © 2025 NTT DATA Japan Corporation 18 WAF (復習: OSI

    参照モデル) 異なるコンピュータシステム間の通信を標準化するため,「どのようにパケットを送るか」という通信⼿順 (プロトコル) を役割に 応じて分類したもの. https://business.ntt-east.co.jp/content/cloudsolution/ih_column-192.html https://www.itmanage.co.jp/column/osi-reference-model/ ソ フ ト ウ ェ ア ネ ッ ト ワ ー ク , セッションの確立・維持 , ポート番号による識別 , Webブラウジング , ルーター , 同一ネットワーク内の通信 , 文字コード変換, 画像, データ圧縮 SSL/TLSのセッション管理, NetBIOS SSL/TLSの暗号化, MIMEなど
  16. © 2025 NTT DATA Japan Corporation 19 CloudFormation (概要と仕組み) YAML/JSON

    で記述した設定ファイル(テンプレート)を基に,AWSリソースを自動構築できるサービス. 作成したリソースの集合体をスタックという単位で管理する.スタックを削除すると,スタックに紐づくリソースは全て削除される. https://d1.awsstatic.com/webinars/jp/pdf/services/20200826_AWS-BlackBelt_AWS-CloudFormation.pdf テンプレートファイル (抜粋) リソースの設定情報を YAML や JSON 形式で記述 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_CloudFormation-1_0731_v1.pdf
  17. © 2025 NTT DATA Japan Corporation 20 CloudFormation (IaC) IaC

    とは,インフラをコードで定義し運用するアプローチのことである.IaC により,⼿順書の作成や引き継ぎコストの低減, 属人化の防止,CI/CD で高速に自動デプロイ,デプロイ時の人的ミスの排除やテンプレートのバージョン管理などが可能になる. コンソールで構築しなくてよいので ⼿順書はコードの実行方法のみ. 冪等性が担保される. (属人化も排除) CodeCommit, GitHubで テンプレートをバージョン管理. 必要に応じて前のバージョンに ロールバック. CI/CDで,コードの変更を通して インフラを自動更新・デプロイ. 検証・商用環境用の設定で デプロイ可能. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_CloudFormation-1_0731_v1.pdf
  18. © 2025 NTT DATA Japan Corporation 21 CloudFormation (テンプレートの要素) テンプレートは,AWSリソース群の設定などを表現する複数のセクションから構成される.(Resourcesのみ必須)

    基本的に,下表の順序でテンプレートを実装する.(あるセクションの値が前のセクションの値を参照する場合があるため) https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_CloudFormation-1_0731_v1.pdf
  19. © 2025 NTT DATA Japan Corporation 22 CDK (概要) TypeScript,

    Python などのプログラミング言語で,AWS リソースを定義できる OSS のフレームワーク. CloudFormation とは異なり,AWS アーキテクチャをオブジェクト指向のアプローチで実装できる. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf IDE で Linter や 生成 AI なども使える! TypeScriptがおすすめ. ユーザー数 が多く, 情報や実装例が 豊富なため
  20. © 2025 NTT DATA Japan Corporation 23 CDK (仕組み) CDK

    のコードから CloudFormation テンプレートを合成 (各リソースの依存関係も考慮して生成) し,CloudFormation を 実行している. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf
  21. © 2025 NTT DATA Japan Corporation 24 CDK (概念) Construct

    により1つ以上の AWS リソースを定義し,Stack として管理する.1つ以上の Stack を App として定義. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf
  22. © 2025 NTT DATA Japan Corporation 25 CDK (CloudFormation との比較)

    CloudFormation の場合,S3 バケットを定義するだけでもそれなりに記述する必要がある.VPC だと数百行になる. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf
  23. © 2025 NTT DATA Japan Corporation 26 CDK (CloudFormation との比較)

    CDK の場合,S3 バケットを3行で定義可能.VPC も数行で定義可能.可読性が高く,メンテナンス性も非常に高い. https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf