我使用侏儒从NodeJS AWS中获取秘密管理器。我确实为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中间件来获取秘密?
发布于 2020-08-12 19:30:41
我解决我的问题。
这里有您想要阅读的秘密:指定以下两个选项:
路径(对象)(可选*):从SSM路径获取参数的映射,其中键是目标名称的前缀,值是SSM路径。示例:{paths:{DB_:‘/dev/service/db’} name (object) (可选*):从SSM获取的参数映射,其中键是目标,值是SSM中的param名称。示例:{DB_URL:'/dev/service/db_url'}}
在我的特殊情况下,我应该使用names选项。
https://stackoverflow.com/questions/63382397
复制相似问题