繁体   English   中英

无服务器 - 如何将 Aws 秘密管理器作为环境变量访问

[英]Serverless - How to access Aws secret manager as environment variable

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

environment:
    XYZ_CREDS: ${ssm:xyzCreds}

在代码中,我像这样访问它process.env.XYZ_CREDS
我需要将此值移动到 AWS 秘密管理器并以相同的方式访问 xyzCred。
基于我尝试过的无服务器文档-

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

但它不起作用。 请帮忙!

在自己解决这个问题之后,我找到了对我有用的解决方案。

假设我们有一个秘密 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。

希望这对其他人有帮助。

鉴于您在机密管理器中的机密名称是正确的。 我认为在解密之前您可能在 manager 之后有一个“a”。

秘密管理器以键值/json 格式存储。因此单独指定变量

例如。

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

否则在代码中使用 aws-sdk 传递秘密管理器名称和解密

 environment:
     secretkey_name:XYZ_CREDS_SECRET_MANAGERa

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM