使用无服务器调用函数时传递 JSON
Passing JSON when invoking function using 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 and this aws doc about how to handle the event in Go
更新
我尝试从 AWS 控制台调用事件并且成功了,所以问题很可能出在无服务器调用命令中。
我通过将 JSON 放在文件中而不是命令本身找到了解决此问题的方法,这并不能解决我在问题中遇到的问题,但它是一种调用函数 Json
我添加了一个 events/startAndEnd.json
文件,其中包含我的 json 数据:
{
"startAt":1533513600,
"endAt":1534118399
}
并在调用命令中引用该文件:serverless invoke -f orders --path events/startAndEnd.json
以防您在通过 npm
运行 命令时遇到此问题。我在调用它时也遇到了类似的错误:
"invoke": "serverless invoke --function myfunction --data \"{ \"Records\": []}\"",
通过将 data
上的双引号更改为单引号,它突然开始工作:
"invoke": "serverless invoke --function myfunction --data '{ \"Records\": []}'",
我是 运行 使用无服务器用 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 and this aws doc about how to handle the event in Go
更新 我尝试从 AWS 控制台调用事件并且成功了,所以问题很可能出在无服务器调用命令中。
我通过将 JSON 放在文件中而不是命令本身找到了解决此问题的方法,这并不能解决我在问题中遇到的问题,但它是一种调用函数 Json
我添加了一个 events/startAndEnd.json
文件,其中包含我的 json 数据:
{
"startAt":1533513600,
"endAt":1534118399
}
并在调用命令中引用该文件:serverless invoke -f orders --path events/startAndEnd.json
以防您在通过 npm
运行 命令时遇到此问题。我在调用它时也遇到了类似的错误:
"invoke": "serverless invoke --function myfunction --data \"{ \"Records\": []}\"",
通过将 data
上的双引号更改为单引号,它突然开始工作:
"invoke": "serverless invoke --function myfunction --data '{ \"Records\": []}'",