首页 > 解决方案 > Dotnet Core AWS Lambda 用于 Cognito 确认后触发器完成

问题描述

我使用 Cognito 用户池和注册后确认触发器,我正在编写一个 dotnet core lambda 来做一些后续工作。我通过简单地注销我进入的内容并从那里做一些工作来盯着看。事情是我意识到我的注销工作但是当函数应该“完成”时它没有这样做。它产生以下错误 - 代码:InvalidLambdaResponseException,消息:Unrecognizable lambda output。这是我的FunctionHandler

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
...
public async Task FunctionHandler(JObject input, ILambdaContext context)
{
    context.Logger.LogLine($"INPUT:{input}");
    //Do some work      
}

我只能找到Post Confirmation Lambda Trigger的NodeJS 示例:

exports.handler = (event, context, callback) => {
    console.log(event);

    if (event.request.userAttributes.email) {
            sendEmail(event.request.userAttributes.email, "Congratulations " + event.userName + ", you have been confirmed: ", function(status) {

            // Return to Amazon Cognito
            callback(null, event);
        });
    } else {
        // Nothing to do, the user's email ID is unknown
        callback(null, event);
    }
};

在此示例中,它很简单 - 您只需调用callback,但 dotnet 核心处理程序没有这样的回调。

我也尝试将函数更改为简单地返回一个基本字符串,例如:return "OK";,但它也不喜欢这样,并且给了我同样的错误。

我应该如何关闭 Lambda 的这个过程?

标签: amazon-web-services.net-coreaws-lambda

解决方案


你可以使用;

await Task.CompletedTask;

查看以下示例:https ://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html

对于 Cognito 发布确认事件;

public JObject FunctionHandler(JObject input, ILambdaContext context)
    {
        context.Logger.LogLine($"input data: {JsonConvert.SerializeObject(input)}");
        return input;
    }

推荐阅读