Я запускаю лямбда-функцию, написанную на 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, и это сработало, так что, скорее всего, проблема заключается в вызове без серверакоманда.