AWS Copilot中SSM密钥环境变量替换转义无效报错求助
解决方案
错误原因
你当前的转义写法(\\${}或\${})会将${DATABASE_SERVER}标记为字面文本,导致部署工具无法识别这是需要从SSM参数存储中读取的secret变量,反而认为你要使用一个未定义的系统环境变量,因此报错。
修正配置方案
根据YAML语法和AWS部署工具的变量替换逻辑,你需要:
- 移除多余的转义符,让
${DATABASE_SERVER}保持原样 - 使用单引号包裹变量值,避免YAML解析器提前处理
${}语法
修正后的配置如下:
variables: TEST1: 'https://${DATABASE_SERVER}:5000/ReportServer?' TEST2: 'https://${DATABASE_SERVER}:5000/ReportServer?' secrets: # Pass secrets from AWS Systems Manager (SSM) Parameter Store. DATABASE_SERVER: /database/server
验证逻辑说明
- 部署工具会先从SSM参数存储中读取
/database/server的值,将其注入为环境变量DATABASE_SERVER - 随后工具会解析
variables段的内容,将${DATABASE_SERVER}替换为对应的SSM参数值 - 使用单引号包裹可以确保YAML解析器不会把
${}当成自身的变量语法处理,而是完整传递给部署工具进行替换
内容的提问来源于stack exchange,提问作者Shanika Ediriweera
相关产品推荐
相关产品推荐

