You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#编写Cognito预认证触发器返回InvalidLambdaResponseException如何解决?

C# 实现Cognito预认证触发器的正确方案

错误原因

你当前使用的APIGatewayProxyRequest/APIGatewayProxyResponse是API网关触发Lambda时专用的输入输出类型,Cognito触发器有独立定义的事件结构,返回结构不匹配就会触发InvalidLambdaResponseException报错。

正确实现步骤

  • 第一步:安装Cognito Lambda事件专用NuGet包
Install-Package Amazon.Lambda.CognitoIdentityProvider
  • 第二步:替换输入输出类型为预认证触发器专属类型,参考代码如下:
using Amazon.Lambda.CognitoIdentityProvider.Events;
using Amazon.Lambda.Core;
using System;

public class CognitoTriggers
{
    public PreAuthenticationResponse PreAuthTrigger(PreAuthenticationRequest request, ILambdaContext context)
    {
        context.Logger.LogLine($"预认证触发器触发,用户ID:{request.UserName}");
        
        // 此处可添加自定义校验逻辑,比如判断用户是否在允许名单内、账号状态是否正常
        // 如果要拒绝认证,直接抛出异常即可,Cognito会自动返回错误给客户端
        /*
        if (校验不通过的条件)
        {
            throw new Exception("当前账号暂无登录权限");
        }
        */
        
        // 校验通过直接返回响应对象即可,不需要自定义状态码
        return new PreAuthenticationResponse();
    }
}

额外说明

  • 所有Cognito触发器都有对应的专属输入输出类型,比如预注册触发器用PreSignUpRequest/PreSignUpResponse,后置认证触发器用PostAuthenticationRequest/PostAuthenticationResponse,都在Amazon.Lambda.CognitoIdentityProvider.Events命名空间下。
  • 触发器逻辑执行完成后无需额外配置返回字段,只要返回对应类型的实例,Cognito就会判定校验通过。

内容的提问来源于stack exchange,提问作者Mikołaj Waśniewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:06:03