我已经根据以下Github回购创建了一个自定义AWS身份验证流
我希望verify-auth-challenge-response Lambda调用我创建的自定义Lambda,我正在使用它来设置用户的密码。这是在这样的情况下,用户没有经过验证的电子邮件地址。我不想让他们两次完成一个验证代码,所以如果挑战被接受,这个新的Lambda想要设置密码。
我对verify-auth-challenge-response做了如下修改
import { VerifyAuthChallengeResponseTriggerHandler } from 'aws-lambda';
import AWS from 'aws-sdk';
export const handler: VerifyAuthChallengeResponseTriggerHandler = async (event, context) => {
const expectedAnswer = event.request.privateChallengeParameters!.secretLoginCode;
if (event.request.challengeAnswer === expectedAnswer) {
event.response.answerCorrect = true;
changePassword(context);
} else {
event.response.answerCorrect = false;
}
return event;
};
//@ts-ignore
const changePassword = async (context) => {
const lambda = new AWS.Lambda({
region: 'eu-west-2'
});
const params = {
FunctionName: 'CustomLambdaName', // the lambda function we are going to invoke
InvocationType: 'Event',
LogType: 'Tail',
Payload: '{ "password" : "PasswordSuppliedByUser" }'
}
lambda.invoke(params, function(err, data) {
if (err){
console.log(err, err.stack);
context.done('error', err);
} // an error occurred
else {
console.log(data);
context.succeed(data.Payload);
} // successful response
});
}我将我的自定义Lambda添加到Resources下的项目中
ChangePassword:
Type: AWS::Serverless::Function
Properties:
CodeUri: lambda-triggers/change-password/
Handler: change-password.handler
Runtime: nodejs12.x部署之后,我创建了一个包含以下策略的IAM角色
AWSLambdaExecute
AWSLambdaBasicExecutionRole
AWSLambdaRole并手动将角色分配给verify-auth-challenge-response和change-password lambda。
当verify-auth-challenge-response执行时,它返回OK,我添加的控制台日志显示它传递了调用调用。但是,从未调用过我的change-password lambda。知道我如何调试它为什么没有被调用吗?我想知道它是否与Lambda中的异步行为有关。
谢谢!
https://stackoverflow.com/questions/67531283
复制相似问题