NodeJS 无服务器-如何将Aws Secret Manager作为环境变量访问

g9icjywg  于 2023-08-04  发布在  Node.js
关注(0)|答案(3)|浏览(106)

目前,我正在访问AWS参数存储值作为环境变量。它在无服务器的yml中定义如下:

environment:
    XYZ_CREDS: ${ssm:xyzCreds}

字符串
在代码中,我像这样访问process.env.XYZ_CREDS
我需要将此值移动到AWS secret manager,并以相同的方式访问xyzCreds。
基于无服务器文档,我这样尝试-

custom:
    xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS_SECRET_MANAGERa~true} 
  environment:
    XYZ_CREDS: ${self:custom.xyzsecret}}


但没有用。救命啊!

hivapdat

hivapdat1#

在自己与这个问题作斗争后,我找到了适合我的解决方案。
假设我们有一个秘密XYZ_CREDS,我们在其中存储用户和密码的键值对。AWS Secrets管理器以JSON格式存储它们:第一个月
下面是如何将用户名和密码放入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}

字符串
我正在使用Serverless 1.73.1部署到CloudFormation。
希望这对其他人有帮助。

qmb5sa22

qmb5sa222#

既然你的秘密经理的名字是正确的。我觉得你在解密前可能会有一个“a”的经理。

2sbarzqh

2sbarzqh3#

Secret Manager以key value/json格式存储。因此,请单独指定变量
例如。

environment:
     user_name: ${self:custom.xyzsecret}.username
     password: ${self:custom.xyzsecret}.password

字符串
否则在代码中传递机密管理器名称并使用aws-sdk解密

environment:
     secretkey_name:XYZ_CREDS_SECRET_MANAGERa

相关问题