调用AWS Lambda时使用Handler函数和Invoke函数有区别吗

时间:2019-07-01 11:35:32

标签: amazon-web-services go aws-lambda

使用Handler函数调用AWS Lambda以及在Go中使用Invoke(input * InvokeInput)函数时,有什么区别吗?

我需要以多种方式调用我的Lambda。例如,有时候我需要同步调用它(作为REST API),有时候我需要异步调用它。我该如何实现?

我是否创建类似这样的内容:

func main(){

svc := lambda.New(session.New())
input := &lambda.InvokeInput{
    ClientContext:  aws.String("MyApp"),
    FunctionName:   aws.String("MyFunction"),
    InvocationType: aws.String("Event"),
    LogType:        aws.String("Tail"),
    Payload:        []byte("fileb://file-path/input.json"),
    Qualifier:      aws.String("1"),
}

result, err := svc.Invoke(input)
if err != nil {
 ....
}

}

还是我创建像这样的Handler函数:

func main(){
     lambda.Start(Handler)
}

func Handler(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error){
   ....
}

在这两种情况下,当我有时需要异步调用lambda并提供输入有效载荷作为JSON,有时又需要同步调用lambda(REST API)并提供输入作为HTTP请求时,我该如何处理?是否可以在不将events.APIGatewayProxyRequest作为函数参数传递的情况下将lambda作为REST API调用?

0 个答案:

没有答案