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
170
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 くらっち
Pixel Agentsで Bedrock AgentCore Runtime上の Strands Agentsをキャラクターにして動かそう
kuracchi_enj1
0
700
作業の自動化するのに AIエージェント使う思考は 捨てたい...!
kuracchi_enj1
0
930
Claude Codeを推進したのに使ってくれない… うまくいかない原因と今後の進め方
kuracchi_enj1
2
72
AIエージェント作ったろ!
kuracchi_enj1
0
190
CDKでさまざまなエージェントを構築してみた
kuracchi_enj1
2
350
Claudeを飼い慣らす環境づくり
kuracchi_enj1
2
2.2k
ps.pdf
kuracchi_enj1
0
39
CC WorkFlow Studio で作る開発ワークフロー
kuracchi_enj1
0
51
Other Decks in Programming
See All in Programming
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
480
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
不幸な GC
chencmd
0
850
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
110
リアルな遅延を測る仕様
kota_yata
1
130
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
290
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.6k
typoなんかねぇよ
raspython3
0
630
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
270
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
100
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
100
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
200
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
The Limits of Empathy - UXLibs8
cassininazir
1
620
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Producing Creativity
orderedlist
PRO
348
41k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.6k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
460
The Pragmatic Product Professional
lauravandoore
37
7.4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
360
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
460
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
910
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