我正在使用Serverless运行用Go编写的lambda函数,我想在调用它时将几个参数传递给它。
这是我创建的用于接收请求的结构:
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"
}
我不确定自己在做什么错,我可以在网上找到任何示例,只有serverless doc about how to do the invoke和aws doc about how to handle the event in Go
更新 我尝试从AWS控制台调用该事件,并且该事件有效,因此很有可能是无服务器调用命令中的问题。
答案 0 :(得分:1)
我找到了一种解决方法,将JSON存储在文件中而不是在命令本身中,这不能解决我在此问题中遇到的问题,但这是一种使用Json调用函数的方法
我添加了一个包含我的json数据的events/startAndEnd.json
文件:
{
"startAt":1533513600,
"endAt":1534118399
}
并在调用命令serverless invoke -f orders --path events/startAndEnd.json