View a markdown version of this page

時間型政策支援 - Amazon Bedrock AgentCore

時間型政策支援

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") };

使用案例:僅允許在上班時間 (每天 UTC 上午 9 點至下午 5 點) 退款。

合併日期和時間限制

結合絕對日期與每日時間限制。

範例:具有每日小時數的有限時間提升

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。如果您的業務在不同的時區營運,請在建立政策之前將本機時間轉換為 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") };

自然語言的最佳實務

  • 明確了解時間 — 使用「9am to 5pm UTC」而不是「上班時間」

  • 一律指定 UTC — 包含 "UTC" 以避免模棱兩可的情況

  • 針對日期使用 ISO 格式 — 使用 "2025-01-01" 而非 "1 月 1 日"

  • 提供特定時間範圍 — 避免含糊的詞彙,例如「白天」或「下班後」

自然語言提示的良好範例:

"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"