如何在Amplify的amplify.yaml中使用AWS Systems Manager存储的密钥
解决AWS Amplify从SSM参数存储读取密钥为空的问题
先检查SSM参数的基础配置
- 确认参数路径完全匹配:你的参数是
/amplify/abcdefgh1234/dev/MY_PARAM,要核对Amplify应用ID确实是abcdefgh1234,环境是dev,参数名MY_PARAM的拼写、大小写完全一致。 - 给Amplify服务角色加权限:Amplify需要
ssm:GetParameter权限才能读取该参数。找到Amplify应用对应的IAM角色,添加一条内联策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:你的AWS区域:你的账号ID:parameter/amplify/abcdefgh1234/dev/MY_PARAM" } ] }
修正Amplify环境变量配置
在Amplify控制台的应用「环境设置」-「环境变量」里,添加变量时:
- 变量名设为
MY_PARAM(和你要在yaml里引用的名称一致) - 变量值直接填SSM参数的完整路径
/amplify/abcdefgh1234/dev/MY_PARAM,不需要加任何额外前缀。
正确在amplify.yaml中引用
不要用${secrets.MY_PARAM},改用${env.MY_PARAM}来引用。Amplify会自动识别环境变量值是SSM参数路径,在构建时拉取实际的密钥值。示例:
version: 1 frontend: phases: preBuild: commands: # 验证参数是否正确读取 - echo "读取到的参数值: ${env.MY_PARAM}" # 可将参数注入项目配置,比如写入.env文件 - echo "MY_PARAM=${env.MY_PARAM}" > .env
最后验证步骤
- 保存环境变量后,手动触发一次新的构建,确保配置生效。
- 查看构建日志,搜索
MY_PARAM相关内容,确认是否有参数拉取记录,或者是否有权限报错(若有,优先检查IAM权限)。
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

