首页 > 解决方案 > 一个 lambda 可以调用另一个 lambda,然后在子 lambda 完成之前退出吗?

问题描述

我有两个用 go 编写的 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.)它正在返回一个值。有没有办法将这两个动作分开,以便我可以在顶部返回一个值,但在稍后完成执行?

标签: goaws-lambda

解决方案


是的,您需要传递InvocationType: "Event"Invoke呼叫,记录在这里。默认调用类型是RequestResponse等待来自被调用 Lambda 的响应。


推荐阅读