Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第3回_AWSアーキテクチャに関する勉強会/aws_architecture_study_se...
Search
Renya K.
April 17, 2025
0
1
第3回_AWSアーキテクチャに関する勉強会/aws_architecture_study_session_3
生成 AI 実用化推進プログラムに参画して得られたノウハウの共有です.
Renya K.
April 17, 2025
Tweet
Share
More Decks by Renya K.
See All by Renya K.
第2回_AWSアーキテクチャに関する勉強会/aws_architecture_study_session_2
ren8k
0
1
第1回_AWSアーキテクチャに関する勉強会/aws_architecture_study_session_1
ren8k
0
2
LangGraph × Bedrock による複数の Agentic Workflow を利用した Supervisor 型のマルチエージェントの実現/langgraph-bedrock-supervisor-agent
ren8k
4
700
Claude3 on Bedrock with Converse API + Tool use でチャットアプリを作成してみた
ren8k
1
2.3k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
183
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Automating Front-end Workflow
addyosmani
1370
200k
Site-Speed That Sticks
csswizardry
5
500
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
760
Building Adaptive Systems
keathley
41
2.5k
We Have a Design System, Now What?
morganepeng
52
7.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Transcript
© 2025 NTT DATA Japan Corporation 第3回 AWS アーキテクチャに関する勉強会 2025/04/17
株式会社NTTデータ 鯨田 連也
© 2025 NTT DATA Japan Corporation 2 目次 • はじめに
• 背景・目的・狙い • 構築した AWS アーキテクチャ • 前回の復習 • AWSリソース(認証・セキュリティ・IaC) • Cognito • Secret Manager • WAF • CloudFormation • CDK
© 2025 NTT DATA Japan Corporation 3 01 はじめに
© 2025 NTT DATA Japan Corporation 4 背景・目的・狙い 背景 2024
年度の AWS 生成 AI 実用化推進プログラムに参画した.本プログラムでは,AI Agent によるソリューションを AWS 上で開発し,実際に顧客に Web アプリケーションとして無料トライアル提供した. 目的 本勉強会では,本取り組みを通して得られたAWSに関するナレッジについて共有する. 狙い 各サービスの基本知識と AWS コンソール上でのサービスの確認方法をセットで理解すること.
© 2025 NTT DATA Japan Corporation 5 構築した AWS アーキテクチャ
(1/2) Streamlit のアプリケーションを ECS でコンテナとして実行し,ネットワークの前段に ALB を配置して,AI Agent ソリューションを インターネット経由でWeb アプリケーションとして配信するためのアーキテクチャを実装した.これらを CDK で IaC 化している. AWS CDK
© 2025 NTT DATA Japan Corporation 6 構築した AWS アーキテクチャ
(2/2) (1)ネットワーク,(2) コンテナ運用・データベース,(3) 認証・セキュリティ・IaCに大別して,勉強会では解説する. 可能な限り,コンソール画面を共有しながらサービスについての理解を深めていく. (1) ネットワーク (2) コンテナ運用・データベース AWS CDK (3) 認証・セキュリティ・IaC
© 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 のコンテナを実行
© 2025 NTT DATA Japan Corporation 8 02 AWSリソース(認証・セキュリティ・ IaC)
© 2025 NTT DATA Japan Corporation 9 Cognito (概要) API
ベースで実装されるモバイルアプリや Web アプリにユーザ認証機能を提供するサービス. 認証にはユーザープールを,認可には ID プール 利用する. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf 認証(本人確認) 認可(アクセス権限付与)
© 2025 NTT DATA Japan Corporation 10 Cognito (ユーザープールの仕組み) ユーザープールにユーザーを作成することで,そのユーザーはCognitoでサインインできる.主にサインインに利用される情報は,
ユーザー名とパスワード.ユーザー作成時,そのユーザーのメアド宛に初期パスワードを自動送信可能. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf 作成された Cognito ユーザーは, 初期パスワードを1週間以内に変更し, サインインする必要がある.
© 2025 NTT DATA Japan Corporation 11 Cognito (Cognito 連携時の認証フロー)
アプリケーションにアクセスすると,Cognito のサインイン画面にリダイレクトし,サインインに成功すると,アプリケーション画面に リダイレクトするように設定する(ことが多い). リダイレクトの設定は, ALBで行うことが可能 コンソール上で, マネージドログイン -> スタイル -> ログインページを表示 でも,ログインページにアクセスすることが可能. https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf
© 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
© 2025 NTT DATA Japan Corporation 13 Secret Manager (Tips)
シークレットは Key-Value 形式で管理する.コンソール画面で「プレーンテキスト」を選択すると,Json 形式で閲覧・コピーする ことが可能.
© 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
© 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) を設定可能
© 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
© 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
© 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など
© 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
© 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
© 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
© 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がおすすめ. ユーザー数 が多く, 情報や実装例が 豊富なため
© 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
© 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
© 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
© 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
None