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
Strands Agents × AWS DevOps Agent 〜自作エージェントに組み込...
Search
ryu-ki
June 19, 2026
64
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Strands Agents × AWS DevOps Agent 〜自作エージェントに組み込んでみた〜
ryu-ki
June 19, 2026
More Decks by ryu-ki
See All by ryu-ki
AI-DLCを試してみて困ったことを共有したい
ryuki0947
0
370
Claude Codeに要件をヒアリングしてもらった体験がかなり良かった(2026年版)
ryuki0947
0
460
Qiita 週1投稿を1年間完走した感想
ryuki0947
0
55
AWS × LINE で始める FinOps ~Terraform を添えて~
ryuki0947
0
150
A2A のトレース事情 〜親子エージェントの動きをLangfuseで可視化してみる〜
ryuki0947
1
610
A2A においてエージェント同士はどのようにやりとりしているのか
ryuki0947
0
320
継続してアウトプットするヒントになる...かもしれない話
ryuki0947
0
100
AWS re:Invent 2025 振り返り 〜初海外が re:Invent な私の感想〜
ryuki0947
0
1.5k
AWS DevOps Agent 入門 〜プレビュー期間に触ってみる〜
ryuki0947
2
110
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
We Are The Robots
honzajavorek
0
240
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
580
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
It's Worth the Effort
3n
188
29k
WCS-LA-2024
lcolladotor
0
630
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Fireside Chat
paigeccino
42
3.9k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
2026/06/19(金) 品川会 #6 Strands Agents × AWS DevOps Agent 〜自作エージェントに組み込んでみた〜
やりたかったこと 2
やりたかったこと DevOps Agent は Web アプリから操作するのが基本 自分のエージェントから呼び出せたら面白いのでは? チャットで環境の状況を聞く – インシデント調査を起票する
– 調査結果を取得する – プレビュー時点では boto3 API が使えなかったが... GA のタイミングで使えるようになった – Strands Agents のカスタムツールとして組み込んでみた – 3
今回作ったもの 4
ツールと構成 3つのツールを作成 ツール 何をする? devops_agent_chat DevOps Agent とチャットする devops_agent_investigate 調査タスクを起票する
devops_agent_get_result 調査結果を取得する Strands Agent ├── devops_agent_chat ← 「このアラーム何が起きてる?」 ├── devops_agent_investigate ← 「調査タスクを起票して」 └── devops_agent_get_result ← 「調査結果を教えて」 5
boto3 での呼び出し方 6
サービス名は devops-agent import boto3 client = boto3.client("devops-agent", region_name="us-east-1") botocore 1.42.79
(GA)以降で利用可能 それ以前だと UnknownServiceError になります – 7
ツール 1:チャット 8
チャットの流れ 1. CreateChat でセッションを作成 2. SendMessage でメッセージを送信 3. EventStream から応答を抽出
9
EventStream のパース type 内容 text ストリーミングテキスト context_usage コンテキスト使用量 final_response 最終応答(これを使う)
chat_title 自動タイトル レスポンスのキーは "events" ブロックの type は以下の 4 種類 10
チャットの実装 @tool def devops_agent_chat(message: str) -> str: chat = devops_client.create_chat(
agentSpaceId=AGENT_SPACE_ID, userType="IAM", ) send_resp = devops_client.send_message( agentSpaceId=AGENT_SPACE_ID, executionId=chat["executionId"], content=message, ) # final_response ブロックだけ抽出 ... 11
ツール 2:調査起票 12
調査起票の実装 @tool def devops_agent_investigate( title: str, description: str, priority: str
= "HIGH" ) -> str: resp = devops_client.create_backlog_task( agentSpaceId=AGENT_SPACE_ID, title=title, description=description, priority=priority, taskType="INVESTIGATION", ) return json.dumps({"taskId": resp["task"]["taskId"], ...}) 起票すると DevOps Agent がバックグラウンドで自律的に調査 13
ツール 3:結果取得 14
結果取得の流れ 1. GetBacklogTask でステータスを確認 2. COMPLETED なら ListJournalRecords で調査ジャーナルを取得 (ステータスは以下のように推移)
3. ジャーナルから最終回答を抽出 PENDING_TRIAGE → PENDING_START → IN_PROGRESS → COMPLETED 抽出のポイント recordType: "message" かつ role: "assistant" が対象 – その中の type: "text" ブロックの最後が最終回答 – 15
デモ 16
チャットの動作 17
Langfuse でトレースを確認 18
調査起票の動作 19
DevOps Agent Web アプリで確認 20
調査結果の取得 21
設計判断 22
起票と結果取得を分離した理由 方式 用途 ポーリング ツール内で結果を待って返したい場合 EventBridge Slack 等への完了通知 分離(今回) エージェントに判断を委ねる
調査完了まで数分〜十数分かかる ポーリングでブロックするのは現実的ではない エージェント自身が「起票→待ち→結果確認」を判断できる 23
まとめ 24
まとめ といったことを Claude Code が調査してくれて楽に実装できたが... こういった試行錯誤が楽しかった時期もあったなぁとしみじみしました DevOps Agent を boto3
経由で Strands のツールとして組み込んだ チャット・調査起票・結果取得の 3 つのツールを実装 EventStream のパースが少し複雑 キーは "events" 、取得すべきは final_response のみ – 起票と結果取得の分離がポイント 25
ご清聴ありがとうございました 26