View a markdown version of this page

Time-based 政策支持 - Amazon Bedrock AgentCore

Time-based 政策支持

中的策略通过context.system.now日期时间值 AgentCore 支持 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 点)内退款。

合并的日期和时间限制

将绝对日期与每日时间限制相结合。

示例:使用每日工时进行 Limited-time 促销

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 格式表示日期 — 使用 “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"