
- 同期呼び出しではLambdaが待機中も課金される
- タスクトークンでStep Functionsを一時停止し、待機コストを排除
- Lambdaを介さない直接統合とdurable functionの2つの代替もある
エージェントの応答待ちが課金を生む
Amazon Bedrock AgentCoreで構築したエージェントは、処理に時間がかかります。プロンプトやモデル、文書の複雑さによって応答までの時間は変動しますが、即座に返ってくることは稀です。従来のパイプラインでは、こうした遅い処理を同期的に呼び出し、結果を待つ実装が一般的です。
最も単純な実装は、AWS Lambda関数がAgentCoreを呼び出し、応答を待つというものです。しかし、その間、Lambda関数は何もせずに起動し続け、その時間分が課金されます。一方、AgentCoreのランタイムは消費ベースの課金で、アイドル中はCPU料金がかからず、メモリのみが課金されます。つまり、無駄はエージェント側ではなく、呼び出し側の待機時間にあります。
3つの非同期パターン
1つ目は、タスクトークンを使うパターンです。Step FunctionsがLambdaを呼び出す際にwaitForTaskToken統合を使用し、タスクトークンを渡して実行を一時停止します。Lambdaはエージェントを起動して即座に返答し、後でエージェントがSendTaskSuccessで再開します。この間、Step Functionsの実行は一時停止したままなので、待機中に課金されません。
2つ目は、Step FunctionsがAgentCoreに直接統合するパターンです。Lambdaを一切使わず、Step FunctionsのTask状態でエージェントを呼び出します。カスタムコードが不要な場合に最小限の構成で実装でき、待機コストも発生しません。
3つ目は、Lambdaのdurable functionを使うパターンです。オーケストレーションをコードで記述し、context.waitForCallbackで待機させます。関数はサスペンド中の課金がなく、エージェントはコールバックで再開します。Step Functionsを使わずにコードでパイプラインを管理したい場合に適しています。
コストへの影響
ブロッキングの実装では、Lambdaの課金時間がエージェントの処理時間とほぼ一致します。一方、非同期パターンでは、Lambdaが行うのはエージェントの起動だけなので数秒で終わり、待機時間は課金されません。Step Functionsの標準ワークフローは状態遷移単位で課金されるため、待機自体のコストは発生しません。
durable functionもサスペンド中はCPU課金がありません。つまり、待機時間をどこで持つかによって、支払うコストが大きく変わります。この記事で紹介された例では、文書検証のパイプラインで各パターンが同じ結果を返すことを確認しています。
実装時の選択基準と注意点
どのパターンを使うかは要件に応じて選びます。エージェント呼び出しの前後で独自のロジックが必要ならタスクトークン、不要なら直接統合、コードで全体を管理したいならdurable functionが選択肢です。
また、エージェントが応答しない場合に備えて、タイムアウトとハートビートを設定することが推奨されます。これにより、サイレントなエージェントがパイプラインを無限に停止させることを防げます。エージェント自体は受け取ったシグナルに応じて応答方法を変えるため、パターンを変更してもエージェント側の再デプロイは不要です。
| 項目 | ブロッキング(非推奨) | タスクトークン | 直接統合 |
|---|---|---|---|
| Lambdaの利用 | あり(待機) | あり(短時間のみ) | なし |
| 待機中の課金 | 発生 | なし(Step Functionsが保持) | なし |
| オーケストレーション | Lambda内で同期 | Step Functions + Lambda | Step Functionsのみ |
So the waste is not on the agent side. It’s the caller, idling on an open connection.
つまり、無駄はエージェント側ではなく、呼び出し側が開いた接続上で待機していることにあります。
今後の見通し
今後は、Step FunctionsやLambdaの非同期実行パターンがAgentCore以外のAIサービスにも応用されるとみられます。また、各パターンの選択基準が実運用でどう影響するかが明らかになれば、より効率的なサーバーレスAIパイプラインの設計が進むでしょう。次に注目すべきは、このパターンが他のAWSサービス(例えばAmazon Bedrockの別機能)にも適用可能かどうか、そして大規模なワークロードでのコスト実績です。
日本の開発者・IT企業にとっての意味
日本のIT企業では、LambdaとStep Functionsを使ったAIパイプラインが増えています。AgentCoreのようなエージェントを同期呼び出しすると、Lambdaの待機時間が課金され、コストが膨らむ可能性があります。この非同期パターンを採用すれば、待機中の課金を抑え、スケーラブルな処理が可能になります。特に、文書処理やバックオフィス業務のようにエージェントの応答が遅いケースで有効です。また、Step Functionsの直接統合やdurable functionを組み合わせることで、アーキテクチャの柔軟性も高まります。
気になる点
- どのパターンを選べば良いですか?
- カスタムロジックが必要ならタスクトークン、不要なら直接統合、コードでオーケストレーションしたいならdurable functionが選択肢です。記事では、各パターンのトレードオフを比較して選ぶことを推奨しています。
- エージェントが応答しない場合はどうなりますか?
- タイムアウトとハートビートを設定できます。これにより、サイレントなエージェントがパイプラインを無限に停止させず、失敗として扱われます。記事では具体例として120秒のタイムアウトと60秒のハートビートを示しています。
- AgentCoreのランタイム料金はどうなりますか?
- AgentCoreランタイムは消費ベースの課金で、アイドル中はCPU課金がなく、その間のメモリのみが課金されます。正確な料金はAWSの公式情報を確認する必要があります。
用語解説
- AgentCore
- Amazon Bedrockのエージェントを構築・接続・最適化するためのプラットフォーム
- Step Functions
- AWSのワークフローオーケストレーションサービス。状態遷移を管理できる
- Task Token
- Step Functionsが渡す一意の識別子。外部からタスク完了を通知するために使う
- Durable Function
- Lambdaの永続的実行機能。待機中は課金されず、コールバックで再開する
- MCP
- Model Context Protocol。エージェントが外部ツールと連携するためのプロトコル
出典
Asynchronous patterns for calling Amazon Bedrock AgentCore agents in serverless pipelines
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する