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

zac*_*rry 4 node.js aws-lambda serverless-framework

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

environment:
    XYZ_CREDS: ${ssm:xyzCreds}
Run Code Online (Sandbox Code Playgroud)

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

  custom:
    xyzsecret: ${ssm:/aws/reference/secretsmanager/XYZ_CREDS_SECRET_MANAGERa~true} 
  environment:
    XYZ_CREDS: ${self:custom.xyzsecret}}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。请帮忙!

Nor*_*ain 7

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

假设我们有一个秘密 XYZ_CREDS,用于存储用户和密码键值对。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}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Serverless 1.73.1 部署到 CloudFormation。

希望这对其他人有帮助。