首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其他Lambda不调用AWS Lambda

其他Lambda不调用AWS Lambda
EN

Stack Overflow用户
提问于 2021-05-14 08:28:04
回答 1查看 103关注 0票数 1

我已经根据以下Github回购创建了一个自定义AWS身份验证流

我希望verify-auth-challenge-response Lambda调用我创建的自定义Lambda,我正在使用它来设置用户的密码。这是在这样的情况下,用户没有经过验证的电子邮件地址。我不想让他们两次完成一个验证代码,所以如果挑战被接受,这个新的Lambda想要设置密码。

我对verify-auth-challenge-response做了如下修改

代码语言:javascript
复制
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下的项目中

代码语言:javascript
复制
  ChangePassword:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda-triggers/change-password/
      Handler: change-password.handler
      Runtime: nodejs12.x

部署之后,我创建了一个包含以下策略的IAM角色

代码语言:javascript
复制
AWSLambdaExecute
AWSLambdaBasicExecutionRole
AWSLambdaRole

并手动将角色分配给verify-auth-challenge-responsechange-password lambda。

verify-auth-challenge-response执行时,它返回OK,我添加的控制台日志显示它传递了调用调用。但是,从未调用过我的change-password lambda。知道我如何调试它为什么没有被调用吗?我想知道它是否与Lambda中的异步行为有关。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 08:54:11

我想知道它是否与Lambda中的异步行为有关。

可能吧。您正在使用异步处理程序,因此您的函数似乎在它有机会调用另一个函数之前就完成了。

为了克服这一问题,您可以将代码包装到new Promise的处理程序中,如AWS博士中所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67531283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档