为了账号安全,请及时绑定邮箱和手机立即绑定

使用无服务器调用函数时传递 JSON

使用无服务器调用函数时传递 JSON

Go
斯蒂芬大帝 2023-04-04 15:32:04
我正在使用无服务器运行一个用 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"}我不确定我做错了什么,我可以在网上找到任何例子,只有这个无服务器文档关于如何进行调用和这个aws 文档关于如何处理 Go 中的事件更新 我尝试从 AWS 控制台调用事件并且它起作用了,所以问题很可能出在无服务器调用命令中。
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

我通过将我的 JSON 放在文件中而不是命令本身找到了解决此问题的方法,这并不能解决我在问题中遇到的问题,但它是一种使用 Json 调用函数的方法


我添加了一个events/startAndEnd.json包含我的 json 数据的文件:


{

    "startAt":1533513600,

    "endAt":1534118399

}

并在调用命令中引用该文件:serverless invoke -f orders --path events/startAndEnd.json


查看完整回答
反对 回复 2023-04-04
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果您在通过 运行命令时遇到此问题npm。我在调用它时也遇到了类似的错误:

    "invoke": "serverless invoke --function myfunction --data \"{ \"Records\": []}\"",

通过将双引号更改为单引号data然后突然开始工作:

    "invoke": "serverless invoke --function myfunction --data '{ \"Records\": []}'",


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信