

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 輪換排程
<a name="rotate-secrets_schedule"></a>

Secrets Manager 會在您設定的輪換時段，依排程輪換您的秘密。若要設定排程和視窗，您可以使用 **cron()** 或 **rate()** 運算式以及視窗持續時間。Secrets Manager 在輪換時段的任何時間輪換您的機密。您可以在小至一小時的輪換時段內每隔四個小時輪換一次秘密。

若要開啟輪換，請參閱：
+ [AWS Secrets Manager 秘密的受管輪換](rotate-secrets_managed.md)
+ [設定 Amazon RDS、Amazon Aurora、Amazon Redshift 或 Amazon DocumentDB 秘密的自動輪換](rotate-secrets_turn-on-for-db.md)
+ [設定非資料庫 AWS Secrets Manager 秘密的自動輪換](rotate-secrets_turn-on-for-other.md)

Secrets Manager 輪換排程使用 UTC 時區。

## 輪換時段
<a name="rotate-secrets_rotation-windows"></a>

Secrets Manager 輪換時段類似於維護時段。當您想要輪換秘密時，您可以設定輪換時段，Secrets Manager 會在輪換時段的某個時間輪換秘密。

Secrets Manager 輪換時段一律從小時開始。對於以天為單位使用`rate()`表達式的輪換排程，輪換時段會從午夜開始。您可以使用`cron()`表達式來設定輪換時段的開始時間。如需範例，請參閱 [Cron 表達式](#rotate-secrets_schedule-cron)。

根據預設，輪換時段會在一小時後關閉，輪換排程則會在一天結束時關閉**，以*天*為單位。

若要變更輪換時段的長度，請設定**時段持續時間**。您可以將輪換時段設定為小至一小時。輪換時段不得延伸到下一個輪換時段。換句話說，對於以*小時*為單位的輪換排程，請確認輪換時段小於或等於輪換之間的小時數。對於以*天*為單位的輪換排程，請確認開始時間加上時段持續時間小於或等於 24 小時。

## Rate 運算式
<a name="rotate-secrets_schedule-rate"></a>

Secrets Manager rate 表達式的格式如下，*Value* 是正整數，*Unit* 可以是 `hour`、`hours`、`day` 或 `days`：

```
rate(Value Unit)
```

您可以每四小時輪換機密一次。最長輪換期間為 999 天。範例：
+ `rate(4 hours)` 表示每四小時輪換機密一次。
+ `rate(1 day)` 表示每天輪換機密一次。
+ `rate(10 days)` 表示每 10 天輪換機密一次。

## Cron 表達式
<a name="rotate-secrets_schedule-cron"></a>

Secrets Manager Cron 表達式的格式如下：

```
cron(Minutes Hours Day-of-month Month Day-of-week Year)
```

包含小時增量的 cron 表達式會每天重設。例如，`cron(0 4/12 * * ? *)` 表示凌晨 4:00 和下午 4:00，然後是第二天凌晨 4:00 和下午 4:00。Secrets Manager 輪換排程使用 UTC 時區。


| 範例排程 | 表達式 | 
| --- | --- | 
| 每隔八小時在午夜開始。 |  `cron(0 /8 * * ? *)`  | 
| 每隔八小時在上午 8:00 開始。 |  `cron(0 8/8 * * ? *)`  | 
| 每隔十小時在凌晨 2:00 開始。 輪換時段將在 2:00、12:00 和 22:00 開始，然後在第二天 2:00、12:00 和 22:00 開始。 |  `cron(0 2/10 * * ? *)`  | 
| 每天上午 10:00。 |  `cron(0 10 * * ? *)`  | 
|  每週六下午 6:00。  |  `cron(0 18 ? * SAT *)`  | 
|  每個月第一天上午 8:00。  |  `cron(0 8 1 * ? *)`  | 
|  每三個月第一個星期天的凌晨 1:00。  |  `cron(0 1 ? 1/3 SUN#1 *)`  | 
|  每個月最後一天下午 5:00。  |  `cron(0 17 L * ? *)`  | 
|  每週一至週五上午 8:00。  |  `cron(0 8 ? * MON-FRI *)`  | 
|  每月的第一天和第十五天下午 4:00。  |  `cron(0 16 1,15 * ? *)`  | 
|  每個月的第一個週日午夜。  |  `cron(0 0 ? * SUN#1 *)`  | 
|  從 1 月開始，第一個星期一午夜每 11 個月一次。  |  `cron(0 0 ? 1/11 2#1 *)`  | 

### Secrets Manager 中的 cron 表達式要求
<a name="rotate-secrets_schedule-cron-ASM"></a>

Secrets Manager 對您可以用於 cron 表達式的內容有一些限制。Secrets Manager 的 cron 表達式在分鐘欄位中必須有 **0**，因為 Secrets Manager 輪換時段會在整點時刻開始。在年份欄位中必須有 **\$1**，因為 Secrets Manager 不支援相隔一年以上的輪換排程。下列資料表顯示您可以使用的選項。


| **欄位** | **Values (數值)** | **萬用字元** | 
| --- | --- | --- | 
|  分鐘  | 必須為 0 | 無 | 
|  小時  |  0–23  |  使用 **/** (正斜線) 指定增量。例如，`2/10` 表示從凌晨 2:00 開始每隔 10 小時一次。您可以每四小時輪換一次秘密。  | 
|  月中的日  |  1–31  |  使用 **,** (逗號) 來包含其他值。例如，`1,15` 表示一個月的第 1 天和第 15 天。 使用 **-** (破折號) 指定範圍。例如，`1–15` 表示一個月的第 1 天至第 15 天。 使用 **\$1** (星號) 來包含欄位中的所有值。例如，`*` 表示一個月的每一天。 **?** (問號) 萬用字元用於表示不限定任何一個。您無法在同一個 cron 表達式中指定 `Day-of-month` 和 `Day-of-week` 欄位。如果您在其中一個欄位指定了數值，就必須在另一個欄位中使用 **?** (問號)​。 使用 **/** (正斜線) 指定增量。例如，`1/2` 表示每兩天從第 1 天開始，換句話說，第 1 天、第 3 天、5 天等。 使用 **L** 指定一個月的最後一天。 使用 ***DAY*L** 指定一個月的最後一個命名日期。例如，`SUNL` 表示一個月的最後一個週日。  | 
|  月  |  1-12 或 JAN-DEC  |  使用 **,** (逗號) 來包含其他值。例如，`JAN,APR,JUL,OCT` 表示 1 月、4 月、7 月 和 10 月。 使用 **-** (破折號) 指定範圍。例如，`1–3` 表示一年的第 1 個月至第 3 個月。 使用 **\$1** (星號) 來包含欄位中的所有值。例如，`*` 表示每個月。 使用 **/** (正斜線) 指定增量。例如，`1/3` 表示每第三個月，從第 1 個月開始，換句話說第 1 個月、第 4 個月、第 7 個月和第 10 個月。  | 
|  週中的日  |  1-7 或 SUN-SAT  |  使用 **\$1** 指定一個月內的星期幾。例如：`TUE#3` 表示當月的第三個週二。 使用 **,** (逗號) 來包含其他值。例如，`1,4` 表示一週的第 1 天和第 4 天。 使用 **-** (破折號) 指定範圍。例如，`1–4` 表示一週的第 1 天至第 4 天。 使用 **\$1** (星號) 來包含欄位中的所有值。例如，`*` 表示一週的每一天。 **?** (問號) 萬用字元用於表示不限定任何一個。您無法在同一個 cron 表達式中指定 `Day-of-month` 和 `Day-of-week` 欄位。如果您在其中一個欄位指定了數值，就必須在另一個欄位中使用 **?** (問號)​。 使用 **/** (正斜線) 指定增量。例如，`1/2` 表示一週的每隔一天，從第一天開始，則第 1 天、第 3 天、第 5 天和第 7 天。 使用 **L** 指定一週的最後一天。  | 
|  年  | 必須為 \$1 | 無 | 