

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 時間ベースのポリシー
<a name="example-policies-time-based"></a>

このセクションのポリシーは、プロモーションウィンドウ、営業時間、またはこれら 2 つの組み合わせなど、**ウォールタイム**から決定します。これらは`context.system.now`、サービスがすべてのリクエストで提供する を読み取ります。

時間ベースの条件は通常の Cedar `when`句であるため、これらのページの他のすべてで構成されます。プリンシパルチェック、入力条件、ガードレール、または一時的な条件はすべて同じポリシーに属することができます。

オーサリングガイドの他の部分と同様に、これらの例は、[リソース設定](example-policies-reference.md)で説明されているリファレンスゲートウェイに対して記述されるため、1 つのポリシーエンジンの他の例と組み合わせることができます。

**注記**  
時間ベースは**時間**ベースとは異なります。時間ベースの条件は、現在の時刻を尋ねます。一時的な条件は、このセッションですでに何が起こったかを尋ねます。詳細については、[「一時ポリシーの例](example-policies-temporal.md)」を参照してください。

## 仕組み
<a name="example-policies-time-based-how"></a>

ポリシーの評価中、現在の UTC タイムスタンプが評価コンテキストの一部として提供されます。

```
// Current datetime in UTC
context.system.now
```

Cedar の日時関数を使用して、時間ベースの条件を作成できます。
+  `datetime("YYYY-MM-DDTHH:MM:SSZ")` — 日時値を作成する
+  `duration("Xh")` — 期間を作成する (時間、分、秒)
+  `.toTime()` — 日時から時刻を抽出する
+ 比較演算子: `<` 、`⇐`、`>`、`>=`、 `==`

## 日時範囲の絶対制限
<a name="example-policies-time-absolute"></a>

特定の暦期間内にポリシーを適用します。

### 例: Open-enrollment ウィンドウ
<a name="example-policies-time-absolute-example"></a>

```
permit (
  principal,
  action == AgentCore::Action::"InsuranceAPI___calculate_premium",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5"
)
when {
  context.system.now >= datetime("2025-01-01T00:00:00Z") &&
  context.system.now < datetime("2025-02-01T00:00:00Z")
};
```

 **ユースケース:** 2025 年 1 月のオープン登録期間中にのみプレミアムを見積もります。

## 毎日の定期的な時間制限
<a name="example-policies-time-daily"></a>

毎日繰り返される時刻に基づいてポリシーを適用します。

### 例: 営業時間ポリシー
<a name="example-policies-time-daily-example"></a>

```
permit (
  principal,
  action == AgentCore::Action::"InsuranceAPI___disburse_payment",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5"
)
when {
  duration("9h") <= context.system.now.toTime() &&
  context.system.now.toTime() <= duration("17h")
};
```

 **ユースケース:** 営業時間 (毎日午前 9 時から午後 5 時) にのみ支払いを行います。

## 日付と時刻を組み合わせた制限
<a name="example-policies-time-combined"></a>

絶対日付と毎日の時間制限を組み合わせてください。

### 例: 1 日あたりの時間を含む登録ウィンドウ
<a name="example-policies-time-combined-example"></a>

```
permit (
  principal,
  action == AgentCore::Action::"InsuranceAPI___update_coverage",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5"
)
when {
  // Valid dates: February 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")
};
```

 **ユースケース:** 毎日午前 9 時から午後 9 時までの 2025 年 2 月中にのみカバレッジの変更を許可します。

## タイムゾーン処理
<a name="example-policies-time-timezone"></a>

すべての日時値は UTC である必要があります。ポリシーエンジンは、タイムゾーン変換またはタイムゾーン対応ポリシーをサポートしていません。

ポリシーで時間を指定するときは、常に UTC を使用します。ビジネスが別のタイムゾーンで運用されている場合は、ポリシーを作成する前にローカル時間を UTC に変換します。