Передача JSON при вызове функции с использованием без сервера - PullRequest
0 голосов
/ 17 сентября 2018

Я запускаю лямбда-функцию, написанную на Go, используя Serverless, и хочу передать ей несколько параметров при ее вызове.

Вот структура, которую я создал для получения запроса:

type RequestStruct struct {
    StartAt int `json:"startAt"`
    EndAt   int `json:"endAt"`
}

И в обработчике я пытаюсь распечатать значения:

func Handler(ctx context.Context,request RequestStruct) (Response, error) {
    fmt.Printf("Request: %v",request)

Я попытался вызвать его с помощью опции --raw, поэтому я попытался сделать это

serverless invoke -f orders --raw -d '{"startAt":1533513600,"endAt":1534118399}'

, и вместо этого я попытался заключить его в двойные кавычки

serverless invoke -f orders --raw -d "{startAt:1533513600,endAt:1534118399}"

serverless invoke -f orders --raw -d "{\"startAt\":1533513600,\"endAt\":1534118399}"

Я получил ошибку маршала со всеми тремя:

{
    "errorMessage": "json: cannot unmarshal string into Go value of type main.RequestStruct",
    "errorType": "UnmarshalTypeError"
}

Я не уверен, что я делаю неправильно, и я могу найти любые примеры для этого в Интернете, есть только этот безсерверный документ о том, как выполнить вызов и этот aws doc о том, как обрабатывать событие в Go

Update Я попытался вызвать событие из консоли AWS, и это сработало, так что, скорее всего, проблема заключается в вызове без серверакоманда.

1 Ответ

0 голосов
/ 17 сентября 2018

Я нашел способ обойти это, имея мой JSON в файле, а не в самой команде, это не решает проблему, с которой я сталкиваюсь в этом вопросе, но это способ вызвать функцию с помощью Json

Я добавил events/startAndEnd.json файл, содержащий мои данные json:

{
    "startAt":1533513600,
    "endAt":1534118399
}

И ссылался на этот файл в команде invoke: serverless invoke -f orders --path events/startAndEnd.json

...