如何解决Middy没有从NodeJS AWS Lambda的Secret Manager中获得秘密
我正在使用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": "","Action": "ssm:GetParametersByPath","Resource": "arn:aws:ssm:us-east-1::parameter/LAMBDA/*"
},"Action": "kms:Decrypt","Resource": "arn:aws:ssm:us-east-1::alias/aws/ssm"
}
]
},"name": "InlinePolicy","arn": "arn:aws:iam:::policy/InlinePolicy"
}
}
可能是由于lambda以异步方式运行,它不等待ssm中间件获取机密吗?
解决方法
我解决了我的问题。
有two options for specifying个您想阅读的秘密:
路径(对象)(可选*):SSM路径映射,用于从中获取参数, 其中键是目的地名称的前缀,而值是 SSM路径。示例:{路径:{DB_:'/ dev / service / db'}}
名称(对象)(可选*):要从SSM提取的参数映射,其中 键是目的地,值是SSM中的参数名称。例: {names:{DB_URL:'/ dev / service / db_url'}}
在我的情况下,我应该使用names
选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。