

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

# 由 Lambda 函式輪換
<a name="rotate-secrets_lambda"></a>

對於許多類型的秘密，Secrets Manager 會使用 AWS Lambda 函數來更新秘密和資料庫或服務。如需有關使用 Lambda 函數成本的資訊，請參閱 [定價](intro.md#asm_pricing)。

對於部分 [由其他服務管理的秘密](service-linked-secrets.md)，您可以使用*受管輪換*。若要使用 [受管輪換](rotate-secrets_managed.md)，您可以先透過管理服務建立機密。

輪換期間，Secrets Manager 會記錄表示輪換狀態的事件。如需詳細資訊，請參閱[使用 記錄 AWS Secrets Manager 事件 AWS CloudTrail](monitoring-cloudtrail.md)。

若要輪換秘密，Secrets Manager 會根據您設定的輪換排程呼叫 [ Lambda 函數](rotate-secrets_lambda-functions.md)。如果您在設定自動輪換時也手動更新機密值，則 Secrets Manager 會在計算下一個輪替日期時將其視為有效輪換。

輪換期間，Secrets Manager 會多次呼叫相同的函數，且每次使用不同的參數。Secrets Manager 使用參數的下列 JSON 請求結構來叫用函數：

```
{
    "Step" : "request.type",
    "SecretId" : "string",
    "ClientRequestToken" : "string",
    "RotationToken" : "string"
}
```

**參數：**
+ **步驟** – 輪換步驟：`create_secret`、`test_secret`、 `set_secret`或 `finish_secret`。如需詳細資訊，請參閱[輪換函數中的四個步驟](rotate-secrets_lambda-functions.md#rotate-secrets_lambda-functions-code)。
+ **SecretId** – 要輪換之秘密的 ARN。
+ **ClientRequestToken** – 新版本秘密的唯一識別符。此值有助於確保冪等性。如需詳細資訊，請參閱 *AWS Secrets Manager API 參考*中的 [PutSecretValue： ClientRequestToken](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html#SecretsManager-PutSecretValue-request-ClientRequestToken)。
+ **RotationToken** – 指出請求來源的唯一識別符。使用擔任的角色或跨帳戶輪換進行秘密輪換時需要，您可以在其中使用另一個帳戶中的 Lambda 輪換函數輪換一個帳戶中的秘密。在這兩種情況下，輪換函數會擔任 IAM 角色來呼叫 Secrets Manager，然後 Secrets Manager 會使用輪換字符來驗證 IAM 角色身分。

輪換失敗可能是因為 Lambda 函數或 Secrets Manager 發生問題。如果任何輪換步驟失敗，Secrets Manager 會在秘密的開啟輪換時段內多次重試整個輪換程序。

**Topics**
+ [資料庫秘密的自動輪換 (主控台)](rotate-secrets_turn-on-for-db.md)
+ [非資料庫秘密的自動輪換 （主控台）](rotate-secrets_turn-on-for-other.md)
+ [自動輪換 (AWS CLI)](rotate-secrets_turn-on-cli.md)
+ [Lambda 函數輪換策略](rotation-strategy.md)
+ [Lambda 輪換函數](rotate-secrets_lambda-functions.md)
+ [輪換函數範本](reference_available-rotation-templates.md)
+ [輪換的許可](rotating-secrets-required-permissions-function.md)
+ [AWS Lambda 輪換函數的網路存取](rotation-function-network-access.md)
+ [輪換疑難排解](troubleshoot_rotation.md)