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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
くらっち
February 24, 2026
Programming
140
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amazon Bedrock AgentCore × CDKでマルチエージェントを構築した話
2026/2/25の JAWS-UG東京 ランチタイムLT会 #32 にて登壇させていただいた際の資料です。
くらっち
February 24, 2026
More Decks by くらっち
See All by くらっち
Claude Codeを推進したのに使ってくれない… うまくいかない原因と今後の進め方
kuracchi_enj1
2
44
AIエージェント作ったろ!
kuracchi_enj1
0
120
CDKでさまざまなエージェントを構築してみた
kuracchi_enj1
2
310
Claudeを飼い慣らす環境づくり
kuracchi_enj1
2
2.1k
ps.pdf
kuracchi_enj1
0
33
CC WorkFlow Studio で作る開発ワークフロー
kuracchi_enj1
0
48
Other Decks in Programming
See All in Programming
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
980
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
750
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
190
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
Lessons from Spec-Driven Development
simas
PRO
0
220
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
220
Agentic UI
manfredsteyer
PRO
0
200
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
410
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
640
はてなアカウント基盤 State of the Union
cockscomb
1
930
Featured
See All Featured
A better future with KSS
kneath
240
18k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
340
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
30 Presentation Tips
portentint
PRO
1
330
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Designing for Timeless Needs
cassininazir
1
260
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
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