一种可能的解决方法是检查函数的返回值是否正确处理。在以下示例中,我们使用 Lambda Go SDK 调用函数,并通过 aws.StringValue 检查返回的错误和有效载荷。如果返回的有效载荷是空的,则使用 fmt.Println 输出错误。
func invokeLambda(sess *session.Session, functionName string, payload []byte) (string, error) {
svc := lambda.New(sess)
input := &lambda.InvokeInput{
FunctionName: aws.String(functionName),
Payload: payload,
}
result, err := svc.Invoke(input)
if err != nil {
return "", err
}
if result.FunctionError != nil {
return "", fmt.Errorf("function error: %s", aws.StringValue(result.FunctionError))
}
payloadStr := string(result.Payload)
if payloadStr == "" {
return "", fmt.Errorf("empty payload")
}
return payloadStr, nil
}
在你的代码中使用这个函数来调用 AWS Lambda 函数,并检查返回的有效载荷是否为空。
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
payload := []byte(`{"key1":"value1", "key2": "value2"}`)
returnValue, err := invokeLambda(sess, "myFunctionName", payload)
if err != nil {
log.Fatalf("Error invoking function: %v", err)
}
log.Printf("Returned value: %v", returnValue)