-- Views
December 24, 25
スライド概要
Developer
Webhookベースのエージェントを 構築する際に知っておきたい、 AWS Serverlessのキホン JAWS-UG Presents - AI Builders Day - LT
自己紹介 Hidetaka Okamoto (岡本秀高) ● CircleCI Field Engineer ● https://hidetaka.dev ● DigitalCube > Stripe > DigitalCube
TL;DR ● Webhook トリガー のAgentを作るなら イベント駆動な設計にしよう ● 送信元サービスなどに応じて EventBridge / SQSを使い分けよう ● 読もう、 Serverless Lens
動かない自作の HubSpotチャットエージェント Lambda /w functions URL HubSpot メッセージ内容を受け取り、 AgentCore Runtimeを呼び出す メッセージ 来ない X Webhook Request AgentCore HubSpotの メッセージ受信イベントで トリガー 社内ドキュメント検索ツール HubSpot APIツールなどで、 問い合わせ内容に基づく返事を生成
Webhook APIの制約 vs エージェントの仕様 5 秒の壁 処理時間の不定性 HubSpot Webhookは ツールやサブエージェントで 5秒以内の返事が必要 AIの返答時間は伸びやすい
困った時の基礎 AWS Well-Architected Framework Serverless Applications Lens AWSによるAWSを構築・運用する上での ベストプラクティスがまとめられたフレームワーク 業界やユースケースに特化したもの: レンズ -> サーバーレスアプリケーションにフォーカスしたver
今回特に重要な 3つの原則 Use events to trigger transactions ユーザーの待ち時間を最小化するため、 イベントをトリガーにしてバックグラウンドでトランザクションを起動します。 Design for failures and duplicates 分散システムでは再送がつきものです。 障害や重複が発生しても整合性が保たれる(冪等性)設計が必要です。 Orchestrate with state machines 関数のチェーン呼び出しは管理が困難です。 Step Functionsなどを用いて状態遷移を明確に管理します。
アーキテクチャの変化 同期処理 (NG) 非同期処理 (OK) Webhook → Lambda → Agent Core → 応答 Webhook → Lambda (202返却) → SQS 30秒の壁を超えられずタイムアウト SQS → Lambda → Agent Core 「イベントでトランザクションを起動」を実践し即時応答
実装の考慮点 (1) データの引き渡し データサイズが小さい場合 (< 256KB) SQSメッセージボディに直接JSONデータを含めます。今回はこのパターンを採用しました。 データサイズが大きい場合 実データはS3やDynamoDBに保存し、SQSにはそのリソースID(キー)のみを渡します。 API再取得が可能な場合 IDのみを渡し、処理側のLambdaで再度APIを叩いて最新データを取得する方法も有効です。
実装の考慮点 (2) 冪等性 Design for failures 対策 SQSは「少なくとも1回」の配信を保証するため、ネット 本番環境ではDynamoDBでメッセージIDを管理し、処理 ワーク障害やリトライにより、同じメッセージが複数回届 済みIDの再処理を防ぐ必要があります。 く可能性があります。 今回はPoCのため許容しています。
基礎が大事 Serverless Applications Lens 今回紹介した7つの設計原則は、サーバーレスアプリケーショ ンを構築する上での羅針盤となります。 「動かない」「不安定」と感じたら、まずはこのドキュメントに立ち 返りましょう。 AWS Well-Architected Framework
まとめ Serverless Lensは必須 AIエージェント開発であっても、サーバーレスの原則は変わりません。 イベント駆動アプローチ 同期処理の制約(タイムアウト)は、イベント駆動アーキテクチャで克服できます。 信頼性の確保 SQSによる順序保証と、冪等性を意識した設計でシステムの信頼性を高めます。 スケーリングへの備え フローが複雑化したら、迷わずStep Functionsへの移行を検討しましょう。
Questions? ご清聴ありがとうございました。 AWS Well-Architected Serverless Lens https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens /