Я создал проект веб-API .NET 6 Core с контроллерами и преобразовал его в Lambda, добавив строку ниже в файл program.cs;
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
Я развернул лямбда-версию AWS с помощью CLI. Вызов функции Lambda из POSTMAN работает нормально, но когда я отправляю сообщение через очередь SQS из консоли AWS, я получаю исключение ниже.
2023-02-01T00:38:06.905Z 04b8dce2-d17c-5125-88d3-80b167d862bd fail System.NullReferenceException: Object reference not set to an instance of an object.
at Amazon.Lambda.AspNetCoreServer.APIGatewayHttpApiV2ProxyFunction.MarshallRequest(InvokeFeatures features, APIGatewayHttpApiV2ProxyRequest apiGatewayRequest, ILambdaContext lambdaContext)
at Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunction`2.FunctionHandlerAsync(TREQUEST request, ILambdaContext lambdaContext)
at Amazon.Lambda.RuntimeSupport.HandlerWrapper.c__DisplayClass26_0`2.d.MoveNext()
--- End of stack trace from previous location ---
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken cancellationToken)
вот сообщение, которое я отправил через POSTMAN и через очередь SQS:
{
"nameOnCard": "Samuel Ojo",
"cardNumber": "5256854950074930",
"cvv": "283",
"expiryMonth": "04",
"expiryYear": "27",
"postalCode": "101232",
"billingAddress": "Lagos",
"billingState": "Lagos",
"billingCity": "Lagos",
"billingCountry": "Nigeria",
"awsSettings": {
"topicArn": [redacted],
"targetArn": [redacted],
"snsTopicFilter": "VirtualCard"
}
}
Я также пробовал отправить сообщение шаблона SQS
{
"Records": [
{
"messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
"receiptHandle": "MessageReceiptHandle",
"body": "{\"sourceAccount\": \"0123445599\",\"destinationAccount\": \"1838494040\",\"bankCode\": \"011\",\"amount\": 200,\"awsSettings\": {\"topicArn\": [redacted],\"targetArn\": [redacted],\"snsTopicFilter\": \"FundTransfer\"}}",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1523232000000",
"SenderId": "123456789012",
"ApproximateFirstReceiveTimestamp": "1523232000001"
},
"messageAttributes": {},
"md5OfBody": "{{{md5_of_body}}}",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:MyQueue",
"awsRegion": "us-east-1"
}
]
}
Вот содержимое файла program.cs;
using VirtualCardService.Middlewares;
using VirtualCardService.Services.Contracts;
var builder = WebApplication.CreateBuilder(args);
#region Add Services to Container
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped();
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
#endregion
var app = builder.Build();
#region Configure Pipeline
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.Use((context, next) =>
{
context.Request.EnableBuffering();
return next();
});
app.UseRouting();
app.UseMiddleware();
app.UseMiddleware();
app.UseAuthorization();
app.MapControllers();
#endregion
app.Run();
Подробнее здесь: https://stackoverflow.com/questions/753 ... -sqs-queue
ASP.NET Core Web API Lambda не может обработать запрос, отправленный из очереди SQS ⇐ C#
Место общения программистов C#
1728388530
Anonymous
Я создал проект веб-API .NET 6 Core с контроллерами и преобразовал его в Lambda, добавив строку ниже в файл program.cs;
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
Я развернул лямбда-версию AWS с помощью CLI. Вызов функции Lambda из POSTMAN работает нормально, но когда я отправляю сообщение через очередь SQS из консоли AWS, я получаю исключение ниже.
2023-02-01T00:38:06.905Z 04b8dce2-d17c-5125-88d3-80b167d862bd fail System.NullReferenceException: Object reference not set to an instance of an object.
at Amazon.Lambda.AspNetCoreServer.APIGatewayHttpApiV2ProxyFunction.MarshallRequest(InvokeFeatures features, APIGatewayHttpApiV2ProxyRequest apiGatewayRequest, ILambdaContext lambdaContext)
at Amazon.Lambda.AspNetCoreServer.AbstractAspNetCoreFunction`2.FunctionHandlerAsync(TREQUEST request, ILambdaContext lambdaContext)
at Amazon.Lambda.RuntimeSupport.HandlerWrapper.c__DisplayClass26_0`2.d.MoveNext()
--- End of stack trace from previous location ---
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken cancellationToken)
вот сообщение, которое я отправил через POSTMAN и через очередь SQS:
{
"nameOnCard": "Samuel Ojo",
"cardNumber": "5256854950074930",
"cvv": "283",
"expiryMonth": "04",
"expiryYear": "27",
"postalCode": "101232",
"billingAddress": "Lagos",
"billingState": "Lagos",
"billingCity": "Lagos",
"billingCountry": "Nigeria",
"awsSettings": {
"topicArn": [redacted],
"targetArn": [redacted],
"snsTopicFilter": "VirtualCard"
}
}
Я также пробовал отправить сообщение шаблона SQS
{
"Records": [
{
"messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
"receiptHandle": "MessageReceiptHandle",
"body": "{\"sourceAccount\": \"0123445599\",\"destinationAccount\": \"1838494040\",\"bankCode\": \"011\",\"amount\": 200,\"awsSettings\": {\"topicArn\": [redacted],\"targetArn\": [redacted],\"snsTopicFilter\": \"FundTransfer\"}}",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1523232000000",
"SenderId": "123456789012",
"ApproximateFirstReceiveTimestamp": "1523232000001"
},
"messageAttributes": {},
"md5OfBody": "{{{md5_of_body}}}",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:MyQueue",
"awsRegion": "us-east-1"
}
]
}
Вот содержимое файла program.cs;
using VirtualCardService.Middlewares;
using VirtualCardService.Services.Contracts;
var builder = WebApplication.CreateBuilder(args);
#region Add Services to Container
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped();
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
#endregion
var app = builder.Build();
#region Configure Pipeline
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.Use((context, next) =>
{
context.Request.EnableBuffering();
return next();
});
app.UseRouting();
app.UseMiddleware();
app.UseMiddleware();
app.UseAuthorization();
app.MapControllers();
#endregion
app.Run();
Подробнее здесь: [url]https://stackoverflow.com/questions/75304707/asp-net-core-web-api-lambda-fails-to-handle-request-sent-from-sqs-queue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия