You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation跨区域引用同账号Secrets Manager密钥失败求助

问题

在us-east-1区域创建了一个Secrets Manager密钥,在该区域部署CloudFormation栈时,使用以下动态引用语句可正常解析:

{{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:<accountId>:secret:<secretName>:SecretString:<secretKey>::}}

但在eu-west-2区域部署另一个栈时,使用完全相同的引用语句,出现如下错误:

Secrets Manager can't find the specified secret. (Service: AWSSecretsManager; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: ; Proxy: null)

根据AWS CloudFormation文档,指定完整ARN作为secret-id时支持跨账号解析密钥,但未找到跨区域相关说明,现咨询:是否遗漏配置导致无法跨区域引用同账号密钥?或者该功能本身不被支持?

解答
  • 核心结论:CloudFormation的Secrets Manager动态引用默认不支持跨区域解析。即使指定了完整ARN,部署栈时CloudFormation会调用当前区域(eu-west-2)的Secrets Manager服务端点,而该端点无法直接访问其他区域(us-east-1)的密钥资源,这就是你遇到ResourceNotFoundException的原因。
  • 可行替代方案:
    1. 跨区域复制密钥:利用Secrets Manager的跨区域复制功能,在eu-west-2区域创建us-east-1密钥的副本并开启自动同步,之后在栈中引用该副本的ARN或名称。
    2. 自定义资源拉取密钥:编写Lambda自定义资源,在栈部署时跨区域调用us-east-1的Secrets Manager API获取密钥值,再传递给CloudFormation资源。需确保Lambda具备访问目标区域密钥的IAM权限。
    3. 参数传递(不推荐):手动获取us-east-1密钥的值,将其作为栈参数传入。但此方式会导致密钥值以明文形式出现在栈参数和执行记录中,存在安全风险。
参考文档(翻译)

AWS CloudFormation动态引用Secrets Manager的关键规则:

  • 动态引用格式为{{resolve:secretsmanager:secret-id:SecretString:json-key::version-stage}}
  • 当指定完整ARN作为secret-id时,支持跨AWS账号解析密钥,但需确保目标账号的CloudFormation拥有访问源账号密钥的权限。
  • 若未指定ARN,CloudFormation会在当前栈部署的区域查找对应名称的密钥。

内容的提问来源于stack exchange,提问作者Milan Gatyás

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:56:06