由于30s HTTP网关超时对于我的目的而言太短,因此我正在手动调用lambda函数。使用HTTP时该功能正常运行,但是当我手动调用该功能时,request.Body
为空。
这是我的lambda代码上的处理程序:
func handler(request events.APIGatewayProxyRequest)
(events.APIGatewayProxyResponse, error) {
// Left out implementation details.
// request.Body == "" here
}
这是我如何调用它:
func InvokeHooknode(req *HooknodeReq) error {
// Serialize params
payload, err := json.Marshal(*req)
if err != nil {
return err
}
// Invoke lambda.
client := lambda.New(sess)
res, err := client.Invoke(&lambda.InvokeInput{
FunctionName: aws.String(hooknodeFnName),
Payload: payload,
})
if err != nil {
return err
}
return nil
}
我已经打印出payload
,它看起来正确。我只是不确定如何在lambda处理程序中访问有效负载。
答案 0 :(得分:0)
检查此函数所在的区域,然后检查要从中调用该函数的区域。
插入功能ARN作为功能名称,而不是提供功能名称。
Payload: JSON.stringify(payload)
不只是
Payload: payload