gpt4 book ai didi

amazon-web-services - 使用asp.net core的无服务器模板的aws lambda函数

转载 作者:行者123 更新时间:2023-12-04 15:03:04 36 4
gpt4 key购买 nike

我对 aws 的了解不够,但我的公司要求我做一份工作,我想这正是 AWS Lambda 完美完成的工作。要求是我必须创建一个服务,该服务的端点需要每天调用两次。我遵循的方法是通过 visual studio 创建一个无服务器 Web API,并为每个端点创建 API 网关端点。然后通过云监视事件添加触发器以每天运行两次,但每当触发该功能时,我都会收到此错误。

Object reference not set to an instance of an object.: NullReferenceException
at Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction.MarshallRequest(InvokeFeatures features, APIGatewayProxyRequest apiGatewayRequest, ILambdaContext lambdaContext)
at Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunction`2.FunctionHandlerAsync(TREQUEST request, ILambdaContext lambdaContext)
at lambda_method(Closure , Stream , Stream , LambdaContextInternal )

最佳答案

我有同样的问题,最近可以解决。

如果您将 Lambda 与 ASP.NET Core 一起使用,您应该有 LambdaEntryPoint 类来处理所有请求。尝试覆盖此类中的 MarshallRequest 方法,添加日志记录并查看 apiGatewayRequest 参数中的内容。代码看起来像这样:

protected override void MarshallRequest(InvokeFeatures features, APIGatewayProxyRequest apiGatewayRequest, ILambdaContext lambdaContext)
{
LambdaLogger.Log($"Request path: {apiGatewayRequest.Path}");
LambdaLogger.Log($"Request path parameters: {apiGatewayRequest.PathParameters}");
LambdaLogger.Log($"Request body: {apiGatewayRequest.Body}");
LambdaLogger.Log($"Request request context: {apiGatewayRequest.RequestContext}");
base.MarshallRequest(features, apiGatewayRequest, lambdaContext);
}

在我的例子中,所有这些值都是空值。这样做的原因是使用 Amazon EventBridge 使 Lambda 保持在线状态以避免冷启动。如果您还使用 EventBridge,请尝试在那里正确配置请求。如果没有,您可以尝试通过以下方式更新 MarshalRequest:

protected override void MarshallRequest(InvokeFeatures features, APIGatewayProxyRequest apiGatewayRequest, ILambdaContext lambdaContext)
{
if(apiGatewayRequest.RequestContext == null) //Or other property
{
return;
}

base.MarshallRequest(features, apiGatewayRequest, lambdaContext);
}

关于amazon-web-services - 使用asp.net core的无服务器模板的aws lambda函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66637342/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com