時間ベースのポリシーのサポート
AgentCore のポリシーは、context.system.now日時値を通じて Cedar ポリシーで時間ベースの制限をサポートしています。これにより、特定の日付、時刻、または時間範囲に基づいてポリシーを適用できます。
仕組み
ポリシーの評価中、現在の UTC タイムスタンプが評価コンテキストの一部として提供されます。
// Current datetime in UTC context.system.now
Cedar の日時関数を使用して、時間ベースの条件を作成できます。
-
datetime("YYYY-MM-DDTHH:MM:SSZ")— 日時値を作成する -
duration("Xh")— 期間 (時、分、秒) を作成する -
.toTime()— 日時から時刻を抽出する -
比較演算子:
<、⇐、>、>=、==
日時範囲の絶対制限
特定の暦期間内にポリシーを適用します。
例: プロモーション期間ポリシー
permit( principal, action == AgentCore::Action::"RefundToolTarget___refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway" ) when { context.system.now >= datetime("2025-01-01T00:00:00Z") && context.system.now < datetime("2025-01-31T23:59:59Z") };
ユースケース: 2025 年 1 月のみの返金を許可します。
毎日の定期的な時間制限
毎日繰り返される時刻に基づいてポリシーを適用します。
例: 営業時間ポリシー
permit( principal, action == AgentCore::Action::"RefundToolTarget___refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway" ) when { duration("9h") <= context.system.now.toTime() && context.system.now.toTime() <= duration("17h") };
ユースケース: 営業時間内 (毎日午前 9 時~午後 5 時 UTC) にのみ返金を許可します。
日付と時刻を組み合わせた制限
絶対日付と毎日の時間制限を組み合わせてください。
例: 1 日時間限定プロモーション
permit( principal, action == AgentCore::Action::"DiscountToolTarget___apply_discount", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway" ) when { // Valid dates: Feb 1-28, 2025 context.system.now >= datetime("2025-02-01T00:00:00Z") && context.system.now < datetime("2025-03-01T00:00:00Z") && // Valid hours: 9am-9pm UTC daily duration("9h") <= context.system.now.toTime() && context.system.now.toTime() <= duration("21h") };
ユースケース: 割引ツールは、2025 年 2 月、毎日午前 9 時から午後 9 時までの間にのみ許可します。
タイムゾーン処理
すべての日時値は UTC である必要があります。ポリシーエンジンは、タイムゾーン変換またはタイムゾーン対応ポリシーをサポートしていません。
ポリシーで時間を指定するときは、常に UTC を使用します。ビジネスが別のタイムゾーンで運用されている場合は、ポリシーを作成する前にローカル時間を UTC に変換します。
自然言語を使用して時間ベースのポリシーを生成する
ポリシー作成サービスは、自然言語の説明から時間ベースのポリシーを生成できます。
例: 営業時間ポリシーを生成する
aws bedrock-agentcore-control start-policy-generation \ --policy-engine-id MyEngine-abc123 \ --name BusinessHoursOnly \ --content '{ "rawText": "Allow refunds only during business hours 9am to 5pm UTC" }' \ --resource '{ "arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/MyGateway-xyz789" }'
生成されたポリシー:
permit( principal, action == AgentCore::Action::"RefundToolTarget___refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/MyGateway-xyz789" ) when { duration("9h") <= context.system.now.toTime() && context.system.now.toTime() <= duration("17h") };
自然言語のベストプラクティス
-
時刻を明確にする — 「営業時間」の代わりに「午前 9 時から午後 5 時」を使用します。
-
常に UTC を指定する — あいまいさを避けるために「UTC」を含める
-
日付に ISO 形式を使用する — 「1 月 1 日」の代わりに「2025-01-01」を使用します
-
特定の時間範囲を指定する — "daytime" や "after hours" などのあいまいな用語は避けてください。
自然言語プロンプトの良い例:
"Allow refunds only between 9am and 5pm UTC" "Allow payments except between 2am and 4am UTC daily" "Allow discounts only from 2025-02-01 to 2025-02-28" "Permit high-value transactions between 8am and 8pm UTC"