从 API 网关调用 C# lambda 时出现 JSON 序列化错误



我有一个带有此签名string FunctionHandler(string input, ILambdaContext context)的 C# AWS lambda。这个lambda在lambda Web控制台上测试得很好。但是当我尝试从 API 网关调用相同的 labmda 时,我收到 500 错误,日志中也收到此错误消息

将 Lambda 事件 JSON 有效负载转换为字符串时出错。JSON 字符串必须用引号括起来,例如"Hello World"才能转换为字符串:解析值时遇到意外字符:{。路径 '',第 1 行,位置 1。:JsonSerializerException

我尝试将 lambda 签名更改为此string FunctionHandler(object input, ILambdaContext context)但它没有解决问题。

我尝试使用相同的API网关调用JavaScript lambda,它工作正常。

我的问题是 C# lambda 有什么特别之处,使其无法在 API 网关后面执行?

JavaScript lambda 如下所示

exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};

C# lambda 如下所示

public string FunctionHandler(string input, ILambdaContext context)
{
return "hello";
}

仍然是 AWS lambda 的新手,但这是我发现的,事实证明 aws lambda 应该出于不同的目的具有不同的签名。旨在与 API 网关集成的 lambda 应具有如下所示的签名

public APIGatewayProxyResponse Handler(APIGatewayProxyRequest apigProxyEvent)

此处对此进行了记录。使用C# AWS lambda和API Gateway入门教程很难弄清楚

最新更新