问题描述: 在使用AWS自定义Lambda授权者时,发现在单个请求中两次调用授权者时,第二次调用时客户端的事件对象为空。
解决方法:
context.succeed
方法来实现。exports.handler = (event, context, callback) => {
// 第一次调用授权者时,将事件对象返回给客户端
context.succeed(event);
};
Auth.authorize
方法来实现。const AWS = require('aws-sdk');
const Auth = new AWS.Lambda({
region: 'us-west-2'
});
const invokeAuthLambda = (event) => {
const params = {
FunctionName: 'AuthLambdaFunctionName',
InvocationType: 'RequestResponse',
Payload: JSON.stringify(event)
};
return new Promise((resolve, reject) => {
Auth.invoke(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(JSON.parse(data.Payload));
}
});
});
};
// 客户端的第二次调用中传递事件对象给授权者
const event = {
// 传递相应的事件数据
};
invokeAuthLambda(event)
.then((response) => {
// 处理授权者的响应
})
.catch((error) => {
// 处理错误
});
通过以上解决方法,您可以确保在单个请求中两次调用自定义Lambda授权者时,第二次调用时客户端的事件对象不为空。