Middy 没有从 NodeJS AWS Lambda 中的 Secret Manager 获取秘密

问题描述 投票:0回答:2

我正在使用 Middy 从 NodeJS AWS Lambda 中的 Secret Manager 获取机密。我确实为 Lambda 创建了一个角色来访问参数路径,但由于某些未知原因,该值没有设置上下文对象或环境变量。

process.env.SSM_PATH
的值为LAMBDA。

这是我正在使用的代码。

'use strict';

const middy = require('middy');
const { ssm } = require('middy/middlewares');


const handler = async (event, context) => {
    console.log(context);
    console.log(process.env)
    console.log(event);
};

exports.handler = middy(handler).use(ssm({
    setToContext: true,
    paths: {
        'PARAMETER': `/${process.env.SSM_PATH}/PARAMETER`
    }
}));

这是 IAM 中 Lambda 策略的一部分。

{
    "permissionsBoundary": {},
    "roleName": "monitor_lambda_role",
    "policies": [
        {
            "document": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Sid": "",
                        "Effect": "Allow",
                        "Action": "sqs:sendMessage",
                        "Resource": "arn:aws:sqs:us-east-1::signed-resources-sqs"
                    },
                    {
                        "Sid": "",
                        "Effect": "Allow",
                        "Action": "ssm:GetParametersByPath",
                        "Resource": "arn:aws:ssm:us-east-1::parameter/LAMBDA/*"
                    },
                    {
                        "Sid": "",
                        "Effect": "Allow",
                        "Action": "kms:Decrypt",
                        "Resource": "arn:aws:ssm:us-east-1::alias/aws/ssm"
                    }
                ]
            },
            "name": "InlinePolicy",

            "arn": "arn:aws:iam:::policy/InlinePolicy"
        }
}

可能是由于 lambda 以异步方式运行,它不会等待 ssm 中间件来获取机密?

node.js amazon-web-services aws-lambda
2个回答
0
投票

我解决了我的问题。

两个选项用于指定您要读取的秘密:

paths(对象)(可选*):从中获取参数的 SSM 路径映射, 其中键是目标名称的前缀,值是 SSM 路径。示例:{路径:{DB_:'/dev/service/db'}}

names(对象)(可选*):从 SSM 获取的参数映射,其中 键是目的地,值是SSM中的参数名称。例子: {名称:{DB_URL:'/dev/service/db_url'}}

在我的特殊情况下,我应该使用

names
选项。


0
投票

秘密管理器和参数存储是两个不同的主题。 您还可以尝试使用 middy 的秘密管理器插件 https://middy.js.org/docs/middlewares/secrets-manager/ 而不是 ssm 从秘密管理器获取秘密。

© www.soinside.com 2019 - 2024. All rights reserved.