Go 一个lambda能否调用另一个lambda,然后在子lambda完成之前退出?
我有两个AWS 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
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队列触发。这还提供了重试功能