[英]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.