Go 一个lambda能否调用另一个lambda,然后在子lambda完成之前退出?

Go 一个lambda能否调用另一个lambda,然后在子lambda完成之前退出?,go,aws-lambda,Go,Aws Lambda,我有两个AWS lambda是用围棋写的。一个lambda调用另一个,如下所示: payload, err := json.Marshal(request) if err != nil { log.Printf("ERROR: could not marshal request [%v] into model.ChildLambdaRequest - %v\n", request, err) return false } log.Printf("--- debug sendin

我有两个AWS lambda是用围棋写的。一个lambda调用另一个,如下所示:

payload, err := json.Marshal(request)
if err != nil {
    log.Printf("ERROR: could not marshal request [%v] into model.ChildLambdaRequest - %v\n", request, err)
    return false
}

log.Printf("--- debug sending payload: %s", payload)

// Invoke Child

result, err := client.Invoke(&lambda.InvokeInput{
    FunctionName: aws.String(lambdaName),
    Payload:      payload,
})
if err != nil {
    log.Printf("ERROR: could not invoke Lambda function client [%v] - %v\n", lambdaName, err)
    return false
}
子lambda的完成方式如下:

return model.EventResponse{Success: true}, nil

我知道这是在做两件事:1)它正在完成执行,2)它正在返回一个值。有没有办法将这两个操作分开,这样我就可以在顶部返回一个值,但在以后完成执行

是的,您需要将
InvocationType:“Event”
传递给
Invoke
调用,记录在案。默认的调用类型是
RequestResponse
,它等待来自被调用Lambda的响应。

可以使用

尽管我想签出,它为您提供了此功能以及内置的重试和错误处理。 它与现有的Lambda函数一起工作,并且有一个非常易于使用的界面

最后一个可行的选项是,将消息从第一个函数发送到SQS队列, 第二个lambda由SQS队列触发。这还提供了重试功能