繁体   English   中英

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

[英]Middy is not getting a secret from Secret Manager in a NodeJS AWS Lambda

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

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 中间件获取机密?

我解决了我的问题。

两个选项可用于指定要读取的机密:

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

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

在我的特殊情况下,我应该使用names选项。

暂无
暂无

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

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