Отправка строк в C # AWS Lambda через Postman

#c# #aws-lambda

#c# #aws-лямбда

Вопрос:

Я копаюсь в новых шаблонах dotnet для лямбд в AWS и ломаю голову над правильным способом передачи строковых данных через Postman (или любой веб-клиент на самом деле).

Я использую шаблон пустой функции Lambda от AWS. Просто a dotnet new lambda.EmptyFunction с единственными изменениями, внесенными в файл lambda-tools, чтобы указать на мои учетные данные AWS и регион. Развертывание работает нормально. Вызов функции из локального терминала через глобальные инструменты работает нормально:

 dotnet-lambda invoke-function lambda-hello-empty --payload "test"
 

В консоли AWS использование функции Test также работает со значением just test без каких-либо строк или оболочек JSON.

Я добавил шлюз API и пытаюсь выполнить тот же вызов через Postman с помощью HTTP post, но каждый вызов завершался неудачей с этой ошибкой:

Ошибка преобразования полезной нагрузки JSON лямбда-события в строку. Строки JSON должны быть заключены в кавычки, например «Hello World», чтобы быть преобразованными в строку: значение JSON не может быть преобразовано в System.Строка

У меня есть отдельный API-шлюз, добавленный таким же образом, который не принимает параметр и просто возвращает строку, и это работает, поэтому я не думаю, что проблема связана со шлюзом.

Я уверен, что здесь есть шаг, которого мне не хватает при правильной сериализации, но я его не вижу. Это явно работает с консолей AWS, но поскольку я не знаю, что они могут делать для форматирования, я хочу увидеть эту работу «сырой».

Комментарии:

1. просто предположение, '"test"' вместо "test" того, чтобы работать?

2. Нет, по-прежнему не удается проанализировать строку.

Ответ №1:

Похоже, что где-то в API Gateway / Lambda-стеке ожидаются какие-то дополнительные метаданные, которые мне не хватало. Благодаря тому, что мой класс startup является производным от Amazon.Лямбда.AspNetCoreServer.APIGatewayProxyFunction, я смог заставить запрос работать через Postman и через другие приложения.

Комментарии:

1. Это простое изменение было тем, на что я надеялся, но оно не сработало для меня. Вы хотите сказать, что вы просто буквально изменили функцию публичного класса в 1 строку: APIGatewayProxyFunction { а затем добавили необходимый пакет nuget, и это сработало?

2. Я думаю, этого было достаточно, но это было год назад, так что я не уверен.