AgentCore Temporal Policiesとは?レート制限との違い

AgentCore Temporal Policiesとは

Amazon Bedrock AgentCoreのTemporal Policiesは、現在の1リクエストだけでなく、同じセッションでそれ以前に実行されたアクションの履歴を使って、次のツール実行を許可・拒否する仕組みです。「承認後だけ送金する」「テスト成功後だけデプロイする」「5分以内の実行回数や合計金額を制限する」といった、複数アクションにまたがる規則をポリシーとして表現できます。

ポリシーはオープンソースのDogwoodで記述します。DogwoodはCedarの認可モデルと互換性を保ちながら、formerlysincecountsumなど、過去イベントを見るための時間演算を追加しています。単なる時刻制限ではなく、「このセッションで何が起きたか」を判断に使う点が特徴です。

Temporal PoliciesとGatewayレート制限の違い

比較軸Temporal PoliciesGatewayレート制限
主な目的アクションの順序、承認、回数、累計値を認可判断へ反映呼び出し量、トークン量、接続数を一定の速度内へ抑える
判断の単位同じポリシーセッションのイベント履歴caller、target、toolなどのdimensionで分けたバケット
代表例テスト成功後だけDeploy、1承認につき1実行、セッション内3回までユーザー別RPM、モデル別TPM、同時接続数、特定callerの遮断
境界新しいsession IDでは履歴と回数がリセット設定したdimensionと秒/分のウィンドウで集計
注意点session ID、認証主体、同一account/Region、WAT伝播が重要既定はfail-openで、サービス上限を超える設定はできない

Temporal Policiesは「何をどの順で実行してよいか」を守る

アクションの意味と履歴を評価します。回数制限も作れますが、その集計は同じsession IDの中だけです。新しいセッションを開始すればカウントも新しくなるため、全ユーザー・全セッションを通じたグローバルな流量制御にはなりません。

Gatewayレート制限は「どれだけ速く消費してよいか」を守る

リクエスト、モデルのトークン、接続数などをcaller・target・tool単位で制限します。複数の有効なレート制限はすべて通過する必要があり、customer-defined limitとサービス側上限のうち小さい値が実効上限になります。ただしfail-openが既定なので、認証・認可や業務上の安全条件をレート制限だけへ任せません。

どちらを使うかの判断表

  • 承認、順序、成功結果が前提:Temporal Policies
  • セッション内の回数や累計金額:Temporal Policies
  • ユーザー・チーム別のRPMやTPM:Gatewayレート制限
  • バックエンド保護や接続数の抑制:Gatewayレート制限
  • 高リスクな本番エージェント:両方を併用し、IAM、認証、業務側検証、監視も重ねる

二者択一ではありません。Temporal Policiesを「意味のある操作の境界」、Gatewayレート制限を「消費速度の境界」として重ねると、プロンプトやエージェント実装が変わってもGateway側で共通制御を維持しやすくなります。

実務例:デプロイエージェントを二層で制御する

段階守りたい条件使う制御
1RunTestsが同じセッションで成功しているTemporal Policyで成功responseを確認
2成功から15分以内だけDeployを許可Temporal Policyの時間ウィンドウ
31回の承認でDeployは1回だけsinceで承認の使い回しを防止
4チーム別の呼び出し急増を抑えるGatewayレート制限
5拒否、遅延、429、コストを追跡するCloudWatch metrics/traces

エージェントコード内のif文だけで順序を守ると、別のオーケストレーターや新しいツール経路から呼ばれた場合に抜けが生じます。Gatewayでポリシーと流量制御を適用し、ツール側でも入力検証、冪等性、権限確認を維持します。

導入の7ステップ

  1. 操作を分類する:読み取り、更新、外部送信、決済など、失敗時の影響を整理する
  2. 二つの境界を分ける:順序・承認・累計値と、RPM・TPM・接続数を別要件にする
  3. GatewayとPolicy Engineを準備する:同じAWS account/Regionに配置し、対象Regionを確認する
  4. 認証とIAMを設定する:GatewayのPolicy権限とGetWorkloadAccessTokenを最小権限で付与する
  5. session IDを明示送信する:論理的な会話ごとに生成し、最初のリクエストから同じ値を渡す
  6. LOG_ONLYで試す:正常順序、逆順、期限切れ、回数超過、新規セッションをテストする
  7. レート制限と監視を追加する:dimension、entry、実効上限、fail-open時の補完策、アラートを確認してからENFORCEへ進む

session ID設計で間違えやすい点

  • 同じ会話では同じID:途中で変えると履歴が切れ、順序や回数を評価できない
  • ユーザー間で共有しない:認証なしで同じIDを共有すると、異なるcallerのイベントが同じ履歴に入る場合がある
  • 広すぎる期間にしない:会話単位を基本にし、日次・ユーザー単位が必要なら要件と失効方法を別途設計する
  • ポリシー変更後は新規ID:Temporal Policyの追加・更新は既存セッションを無効化し、再利用時にHTTP 409となる

AWS公式ドキュメントには、session IDを省略した場合について「Gatewayは生成しない」と「生成してレスポンスで返す」という異なる説明があります。仕様差や更新途中の可能性があるため、本番設計では省略動作へ依存せず、アプリ側でIDを生成して最初から明示送信し、利用Regionの実環境で確認します。

本番導入前の注意点

  • account/Region:Temporal Policyはcross-account・cross-Regionへ自動伝播しません。Gatewayと対象を同一account/Regionへ揃えます。
  • WATとIAM:GetWorkloadAccessTokenがないとTemporal Policy有効時の呼び出しが失敗します。
  • 現在リクエストの数え方:同じactionを数える条件では、認可中の現在リクエストもcountへ含まれます。境界値テストが必要です。
  • response条件:成功完了したactionだけがresponseイベントになります。前提actionを許可する別policyも必要です。
  • fail-open:Gatewayレート制限は既定でfail-openです。認可や不正防止の唯一の境界にしません。
  • service quota:customer-defined limitを高くしても、サービス側上限を超えて利用できません。
  • 変動する仕様:対応Region、quota、API、session IDの動作は導入時に公式情報と実環境で再確認します。

監視とテストで確認すること

  • LOG_ONLYとENFORCEで同じテストシナリオを実行する
  • 正常順序、逆順、期限切れ、4回目、新session ID、policy更新後409を確認する
  • TemporalLatency、評価回数、Gateway rate limit metrics、429、バックエンド負荷を確認する
  • dimensionを解決できない場合や制御サービス障害時の補完策を確認する
  • 拒否ログへ入力内容や秘密情報を過剰に残さない

どんなチームに向いているか

  • 決済、外部送信、デプロイなど複数手順を守るエージェントを運用する
  • ユーザーやチーム別にAI利用量の急増を抑えたい
  • エージェント実装から認可・流量制御を分離して共通化したい
  • 監査で「どの規則が、どの履歴を見て拒否したか」を説明したい

単一の読み取りツールだけを低頻度で使う場合は、Temporal Policyまで導入すると運用負荷が上回ることがあります。まずIAMとGateway認証、ツール側検証を整え、履歴をまたぐ規則や流量制御が本当に必要かを判断します。

関連する記事と支援

自然言語からポリシーを作る機能はAgentCoreのDogwoodポリシー作成、検証可能なルール設計はAutomated Reasoning Policiesの記事も参考にしてください。操作分類、脅威・コスト要件、評価シナリオ、監視まで含めて小さく検証する場合は、AI活用・業務効率化支援で要件整理を支援しています。

AIアップデートを、自社の業務改善へつなげる
新機能をすぐ導入する前に、目的・対象業務・確認責任・情報管理・費用対効果を6項目で整理します。
生成AI業務導入ガイドを読む