

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

# 在 CloudFormation 資源中取得 AWS Secrets Manager 秘密
<a name="cfn-example_reference-secret"></a>

透過 CloudFormation，您可以擷取要在其他 CloudFormation 資源中使用的秘密。常見的案例是首先使用 Secrets Manager 產生的密碼建立秘密，然後從秘密中擷取使用者名稱和密碼，以用作新資料庫的憑證。如需使用 建立秘密的資訊 CloudFormation，請參閱 [在 中建立 AWS Secrets Manager 秘密 AWS CloudFormation](cloudformation.md)。

若要擷取 CloudFormation 範本中的秘密，您可以使用*動態參考*。當您建立堆疊時，動態參考會將秘密值提取到 CloudFormation 資源中，因此您不需要對秘密資訊進行硬式編碼。相對地，您就必須依名稱或 ARN 來參考秘密。您可以在任何資源屬性中將動態參考用於機密。您不能在資源中繼資料中將動態參考用於機密 (例如 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html))，因為這會使機密值在主控台中可見。

秘密的動態參考具有下列模式：

```
{{resolve:secretsmanager:secret-id:SecretString:json-key:version-stage:version-id}}
```

**secret-id**  
秘密的名稱或 ARN。若要存取 AWS 帳戶中的秘密，您可以使用秘密名稱。若要存取不同 AWS 帳戶中的秘密，請使用秘密的 ARN。

**json-key** (選用)  
您要擷取值的鍵值組的索引鍵名稱。如果您未指定 `json-key`， 會 CloudFormation 擷取整個秘密文字。此區段可能不可包含冒號字元 (`:`)。

**version-stage** (選用)  
要使用的秘密[版本](whats-in-a-secret.md#term_version)。Secrets Manager 在輪換程序期間使用預備標籤來追蹤不同版本。如果您使用 `version-stage`，請不要指定 `version-id`。如果您未指定 `version-stage` 或 `version-id`，則預設為 `AWSCURRENT` 版本。此區段可能不可包含冒號字元 (`:`)。

**version-id** (選用)  
您要使用的秘密版本的唯一識別碼。如果您指定 `version-id`，則請不要指定 `version-stage`。如果您未指定 `version-stage` 或 `version-id`，則預設為 `AWSCURRENT` 版本。此區段可能不可包含冒號字元 (`:`)。

如需詳細資訊，請參閱[使用動態參考指定 Secrets Manager 秘密](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager)。

**注意**  
請勿使用反斜線`(\)`做為最終值來建立動態參考。 CloudFormation 無法解析這些參考，這會導致資源失敗。