Webhookベースのエージェントを 構築する際に知っておきたい、 AWS Serverlessのキホン

-- Views

December 24, 25

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Webhookベースのエージェントを 構築する際に知っておきたい、 AWS Serverlessのキホン JAWS-UG Presents - AI Builders Day - LT

2.

自己紹介 Hidetaka Okamoto (岡本秀高) ● CircleCI Field Engineer ● https://hidetaka.dev ● DigitalCube > Stripe > DigitalCube

3.

TL;DR ● Webhook トリガー のAgentを作るなら イベント駆動な設計にしよう ● 送信元サービスなどに応じて EventBridge / SQSを使い分けよう ● 読もう、 Serverless Lens

4.

動かない自作の HubSpotチャットエージェント Lambda /w functions URL HubSpot メッセージ内容を受け取り、 AgentCore Runtimeを呼び出す メッセージ 来ない X Webhook Request AgentCore HubSpotの メッセージ受信イベントで トリガー 社内ドキュメント検索ツール HubSpot APIツールなどで、 問い合わせ内容に基づく返事を生成

5.

Webhook APIの制約 vs エージェントの仕様 5 秒の壁 処理時間の不定性 HubSpot Webhookは ツールやサブエージェントで 5秒以内の返事が必要 AIの返答時間は伸びやすい

6.

困った時の基礎 AWS Well-Architected Framework Serverless Applications Lens AWSによるAWSを構築・運用する上での ベストプラクティスがまとめられたフレームワーク 業界やユースケースに特化したもの: レンズ -> サーバーレスアプリケーションにフォーカスしたver

7.

今回特に重要な 3つの原則 Use events to trigger transactions ユーザーの待ち時間を最小化するため、 イベントをトリガーにしてバックグラウンドでトランザクションを起動します。 Design for failures and duplicates 分散システムでは再送がつきものです。 障害や重複が発生しても整合性が保たれる(冪等性)設計が必要です。 Orchestrate with state machines 関数のチェーン呼び出しは管理が困難です。 Step Functionsなどを用いて状態遷移を明確に管理します。

8.

アーキテクチャの変化 同期処理 (NG) 非同期処理 (OK) Webhook → Lambda → Agent Core → 応答 Webhook → Lambda (202返却) → SQS 30秒の壁を超えられずタイムアウト SQS → Lambda → Agent Core 「イベントでトランザクションを起動」を実践し即時応答

9.

実装の考慮点 (1) データの引き渡し データサイズが小さい場合 (< 256KB) SQSメッセージボディに直接JSONデータを含めます。今回はこのパターンを採用しました。 データサイズが大きい場合 実データはS3やDynamoDBに保存し、SQSにはそのリソースID(キー)のみを渡します。 API再取得が可能な場合 IDのみを渡し、処理側のLambdaで再度APIを叩いて最新データを取得する方法も有効です。

10.

実装の考慮点 (2) 冪等性 Design for failures 対策 SQSは「少なくとも1回」の配信を保証するため、ネット 本番環境ではDynamoDBでメッセージIDを管理し、処理 ワーク障害やリトライにより、同じメッセージが複数回届 済みIDの再処理を防ぐ必要があります。 く可能性があります。 今回はPoCのため許容しています。

11.

基礎が大事 Serverless Applications Lens 今回紹介した7つの設計原則は、サーバーレスアプリケーショ ンを構築する上での羅針盤となります。 「動かない」「不安定」と感じたら、まずはこのドキュメントに立ち 返りましょう。 AWS Well-Architected Framework

12.

まとめ Serverless Lensは必須 AIエージェント開発であっても、サーバーレスの原則は変わりません。 イベント駆動アプローチ 同期処理の制約(タイムアウト)は、イベント駆動アーキテクチャで克服できます。 信頼性の確保 SQSによる順序保証と、冪等性を意識した設計でシステムの信頼性を高めます。 スケーリングへの備え フローが複雑化したら、迷わずStep Functionsへの移行を検討しましょう。

13.

Questions? ご清聴ありがとうございました。 AWS Well-Architected Serverless Lens https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens /