【发布时间】:2021-08-04 10:45:51
【问题描述】:
我创建了一个基于以下Github Repo 的自定义 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
});
}
我在Resources下的项目template.yaml中添加了我的自定义Lambda:
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 lambdas。
当verify-auth-challenge-response 执行时,它返回OK,并且我添加的控制台日志显示它通过了invoke 调用。但是我的change-password lambda 从未被调用过。知道如何调试它为什么没有被调用吗?我想知道它是否与 Lambda 中的异步行为有关。
谢谢!
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cognito