You need to enable JavaScript to run this app. 如何在serverless.yml中引用AWS Secrets Manager对象类型密钥的指定键值
优惠活动
大模型
产品
解决方案
定价
更多

如何在serverless.yml中引用AWS Secrets Manager对象类型密钥的指定键值

Serverless框架读取AWS Secrets Manager对象密钥指定键值的实现

问题背景

  • 基于Serverless框架将应用部署到AWS时,需要在部署流程中从Secrets Manager读取配置值
  • 参考官方给出的Secrets Manager值读取示例,使用${ssm:/aws/reference/secretsmanager/secret_ID~true}的写法,可以正常读取Secrets Manager中存储的单字符串类型密钥值
  • 但实际业务中存储的密钥是包含key/value对的JSON对象类型,希望直接读取对象内部的指定key值,此前尝试的两种拼接写法均无法正常生效:
    • ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager:MY_KEY~true}
    • ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager/MY_KEY~true}

实现方案

两种拼接写法失效的核心原因是:SSM路径参数仅支持定位Secrets Manager中的整个密钥资源本身,路径里拼接的冒号、斜杠片段都会被识别为密钥资源ID的一部分,和实际的资源路径不匹配,无法触发密钥的JSON对象解析逻辑。
正确的实现需要结合Serverless内置的JSON变量解析能力,先拉取完整的密钥JSON字符串,再提取指定键值,写法如下:

custom:
  # 拉取完整密钥JSON后,解析提取MY_KEY字段的值
  supersecret: ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager~true,json:MY_KEY}

注意事项

  • 语法中的~true标识不能省略,该标识的作用是声明拉取的是需要解密的敏感参数,省略后会拿到加密的密文,无法正常解析JSON
  • 如果密钥是多层嵌套的JSON结构,可以在json:后使用点路径匹配嵌套字段,比如要取JSON里db.config.password的值,写法为json:db.config.password
  • 如果需要给读取失败配置兜底默认值,可以按照Serverless的变量规则追加默认值配置,比如${ssm:/aws/reference/secretsmanager/secret_ID~true,json:MY_KEY, "local-default-value"}

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 04:24:02