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
Amazon Bedrock AgentCore × CDKでマルチエージェントを構築した話
Search
くらっち
February 24, 2026
Programming
95
1
Share
Amazon Bedrock AgentCore × CDKでマルチエージェントを構築した話
2026/2/25の JAWS-UG東京 ランチタイムLT会 #32 にて登壇させていただいた際の資料です。
くらっち
February 24, 2026
More Decks by くらっち
See All by くらっち
CDKでさまざまなエージェントを構築してみた
kuracchi_enj1
1
140
Claudeを飼い慣らす環境づくり
kuracchi_enj1
1
1.2k
ps.pdf
kuracchi_enj1
0
25
CC WorkFlow Studio で作る開発ワークフロー
kuracchi_enj1
0
36
Other Decks in Programming
See All in Programming
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
180
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
230
Nuxt Server Components
wattanx
0
260
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
5.1k
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
300
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
110
安いハードウェアでVulkan
fadis
1
930
Running Swift without an OS
kishikawakatsumi
0
380
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
350
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
250
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.7k
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
170
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
200
A Soul's Torment
seathinner
6
2.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
WCS-LA-2024
lcolladotor
0
520
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Skip the Path - Find Your Career Trail
mkilby
1
100
Fireside Chat
paigeccino
42
3.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Transcript
Amazon Bedrock AgentCore × CDK で Amazon Bedrock AgentCore ×
CDK で マルチエージェントを構築した話 マルチエージェントを構築した話 1 1
自己紹介 プロフィール ニックネーム: くらっち 年齢: 25歳(新卒3年目) ピーディーシー株式会社 システム開発部 ↓ お猿さんアイコンが目印!
業務内容 社内業務用Webアプリ開発 (Ruby on Rails) AIについてのR&D →主にBedrock AgentCore QA業務 →主に試験部分 2 2
今回お話しする内容 3 3
AWS CDKでマルチエージェントを構築した話 4 4
やったことについての概要 1. 社内業務用Webアプリ にAIチャット機能を実装 StrandsAgents × Bedrock AgentCore Runtime 2.
エージェントがMCPサーバを使えるように実装 FastMCP × Bedrock AgentCore Runtime Lambda × Bedrock AgentCore Gateway 3. ユーザの意図によってタスクを分けるために複数のエージェントを実装 全て、StrandsAgents × Bedrock AgentCore Runtime 5 5
エージェント構成 ※ draw.io MCP を使いました / 各AgentはA2Aではなく、Tools as Agentで連携しています 6
6
なんでA2Aではなく Tool as Agent? サブエージェントをチェアマンエージェントとしてそのまま使いたい場面が想定され るから 7 7
なぜ AWS CDK? デプロイが必要なリソースが多すぎる リソース 数 備考 Elastic Container Registry
7 個 エージェント×6, 自社プロダクトMCP×1 Bedrock AgentCore Runtime 7 個 エージェント×6, 自社プロダクトMCP×1 Lambda 関数 21 個 社内業務用システムAPI用(各テーブルにつき1つ...) AgentCore MCP Gateway 1 個 ターゲットに21個のLambdaを割り当て AgentCore Memory 1 個 親エージェントにのみメモリを紐付け CloudWatch N個 AgentCore Runtime, Lambdaごとに作成 → マネコンでポチポチは無理 → CDKで1発で作っちまおう! 8 8
CDK コード① Lambda × 21 をループで生成 テーブル名リストをループし、Lambda と GatewayTarget をセットで生成
lambda_tables = ["users", "makers", "devices", ...(21個)] for table in lambda_tables: fn = _lambda.Function( ...中略... ) gateway_target = bedrockagentcore.CfnGatewayTarget( ...中略... ) → テーブルを追加したい場合は lambda_tables にテーブル名を足すだけ → Bedrock AgentCore Runtimeも同様にループする 9 9
CDK コード② DockerImageAsset で ECR 自動プッシュ Docker ビルド → ECR
プッシュ → Runtime への URI 参照までループで1発完結 agent_image_dirs = { "yyyyy-chairman-agent": ".../chairman_agent", "yyyyy-xxxxxxx-api-agent": ".../xxxxxxx_api_agent", "yyyyy-yyyyy-api-agent": ".../yyyyy_api_agent", ...中略... } for agent_name, docker_dir in agent_image_dirs.items(): image_asset = ecr_assets.DockerImageAsset( # image_asset.image_uri を Runtime に直接渡せる self, f"{agent_name}Image", directory=docker_dir, ) 10 10
CDK コード③ ループ後に ARN を後注入 各エージェントを作成後に、プロパティをオーバーライドすることで、ARNを注入 # ループ終了後にまとめて注入 child_arn_map =
{ "yyyyy-xxxxxxx-manual-search-agent": "xxxxxxx_MANUAL_SEARCH_AGENT_ARN", "yyyyy-xxxxxxx-api-agent": "xxxxxxx_API_AGENT_ARN", "yyyyy-yyyyy-api-agent": "yyyyy_API_AGENT_ARN", ... } for child_name, env_key in child_arn_map.items(): chairman_runtime.add_property_override( # add_property_override でデプロイ時に正しい ARN が注入される f"EnvironmentVariables.{env_key}", runtimes[child_name].attr_agent_runtime_arn, # CloudFormation の GetAtt ) 11 11
ハマったポイント ① IAMロールに何の権限を割り当てれば良いんやろか! Bedrock AgentCore Runtime → Bedrock AgentCore Runtime
に必要な権限 Bedrock AgentCore Gateway → Lambda に必要な権限 Bedrock AgentCore Runtime → CloudWatchに必要な権限 ② CloudWatchのロググループは作ってあげなきゃいけなかった Bedrock AgentCore Observabilityでエージェントの処理を見たい時に、 「ロググループがない...」となりました →boto3によるデプロイはロググループが自動作成される 12 12
まとめ 1. A2A か Tool as Agent かは、そのエージェントの使い方を意識して決める 2. 複数エージェントの管理はCDKが便利!楽!
3. 環境変数は後からオーバーライドできる 4. エージェント監視のためのロググループは明示的に作る! 5. Bedrock AgentCore Runtime・Bedrock AgentCore Gateway×Lambdaなどの 決まりきった構成のものはSkill化しておきましょう!(最低限のIAMも含む) Skill化できるのもCDKの強み! 13 13
とは言ったものの... 14 14
こんな大規模なエージェント構成を 管理するの大変... 15 15
管理のしやすさを捨ててまで 1つのCDKにまとめなくても良いかもなぁ... と学びになりました。 16 16
ご清聴ありがとうございました ご清聴ありがとうございました 17 17