获取 CloudFormation 资源中的 AWS Secrets Manager 密钥
借助 CloudFormation,您可以检索某个密钥以用于其他 CloudFormation 资源。常见场景是首先使用 Secret Manager 生成的密码创建密钥,然后从该密钥中检索用户名和密码,以用作新数据库的凭证。有关使用 CloudFormation 创建密钥的详细信息,请参阅在 AWS CloudFormation 中创建 AWS Secrets Manager 密钥。
要检索 CloudFormation 模板中的密钥,请使用动态引用。创建堆栈时,动态引用会将密钥值提取到 CloudFormation 资源中,因此您不必对密钥信息进行硬编码。相反,您可以通过名称或 ARN 来引用密钥。您可以在任何资源属性中使用对密钥的动态引用。您不能在资源元数据(例如 AWS::CloudFormation::Init)中使用对密钥的动态引用,因为那样会使密钥值在控制台中可见。
密钥的动态引用模式如下:
{{resolve:secretsmanager:secret-id:SecretString:json-key:version-stage:version-id}}
- secret-id
-
密钥的名称或 ARN。要访问您的 AWS 账户中的密钥,您可以使用密钥名称。要访问其他 AWS 账户中的密钥,请指定密钥的 ARN。
- json-key(可选)
-
要检索其值的键值对的键名称。如果您不指定
json-key,CloudFormation 会检索整个密钥文本。此分段不得包含冒号字符 (:)。 - version-stage(可选)
-
要使用的密钥的版本。Secrets Manager 在轮换过程中使用暂存标注来跟踪不同的版本。如果您使用
version-stage,则不要指定version-id。如果您既未指定version-stage,也未指定version-id,则原定设置将为AWSCURRENT版本。此分段不得包含冒号字符 (:)。 - version-id(可选)
-
要使用的密钥版本的唯一标识符。如果指定
version-id,则不要指定version-stage。如果您既未指定version-stage,也未指定version-id,则原定设置将为AWSCURRENT版本。此分段不得包含冒号字符 (:)。
有关更多信息,请参阅使用动态引用指定 Secrets Manager 秘密。
注意
请不要创建使用反斜杠 (\) 作为最后一个值的动态参考。CloudFormation 无法解析这些引用,这会导致资源失败。