当前,我正在访问AWS参数存储值作为环境变量。像这样在无服务器yml中定义它:
environment:
XYZ_CREDS: ${ssm:xyzCreds}
在代码中,我这样访问process.env.XYZ_CREDS
我需要将此值移至AWS Secret Manager,并以相同的方式访问xyzCreds。
基于serverless document,我尝试这样-
custom:
xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS_SECRET_MANAGERa~true}
environment:
XYZ_CREDS: ${self:custom.xyzsecret}}
但是它不起作用。请帮忙!
答案 0 :(得分:1)
鉴于您在Secrets Manager中的秘密名称正确。我认为您在解密之前可能要在管理者后面加上“ a”。
答案 1 :(得分:0)
秘密管理器以键值/ json格式存储。因此请分别指定变量
例如。
environment:
user_name: ${self:custom.xyzsecret}.username
password: ${self:custom.xyzsecret}.password
否则,传递秘密管理器名称并使用代码中的aws-sdk解密
environment:
secretkey_name:XYZ_CREDS_SECRET_MANAGERa
答案 2 :(得分:0)
我自己为这个问题苦苦挣扎后,找到了适合我的解决方案。
假设我们有一个秘密的XYZ_CREDS,用于存储用户名和密码的ket-value对。 AWS Secrets Manager以JSON格式存储它们:{"user": "test", "password": "xxxx"}
以下是将用户名和密码放入Lambda函数环境变量中的方法:
custom:
xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS~true}
myService:
handler: index.handler
environment:
username: ${self:custom.xyzsecret.user}
password: ${self:custom.xyzsecret.password}
我正在使用无服务器1.73.1部署到cloudformation。
希望这对其他人有帮助。