如何使用无服务器框架处理手动调用的AWS Lambda

时间:2018-08-20 22:33:36

标签: go aws-lambda aws-sdk serverless-framework

由于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处理程序中访问有效负载。

1 个答案:

答案 0 :(得分:0)

检查此函数所在的区域,然后检查要从中调用该函数的区域。

插入功能ARN作为功能名称,而不是提供功能名称。

Payload: JSON.stringify(payload) 

不只是

Payload: payload