我使用AWS Amplify、AppSync(GraphQL)和Go Lambda函数。
type Mutation {
goadd(name: String): String @function(name: "goadd-${env}")
}
确定程序请求模板为:
然后我的lambda是
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
type MyEvent struct {
Name string `json:"name"`
}
func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
fmt.Printf("Hello %v\n", name.Name)
fmt.Println(name)
fmt.Println(ctx)
return fmt.Sprintf("Hello %s!", name.Name), nil
}
func main() {
lambda.Start(HandleRequest)
}
当我在AppSync中执行变化时,得到的响应是Hello !
我也检查了CloudWatch日志,它们没有显示任何数据被传入。
我用Node.js做了同样的事情,它没有问题,所以我不知道我在Go语言中做错了什么。有人有什么想法吗?
我还阅读了"github.com/aws/aws-lambda-go/lambda"
的文档,对于如何获取传入的值,感觉相当模糊。
1条答案
按热度按时间t9eec4r01#
我在查看other StackOverflow的答案时找到了答案。这不是重复的,因为引用的SO帖子是针对一个单独的问题的,它附带地显示了从请求中获取参数的正确方法。解决方案是传入的值是字符串(在我的例子中)参数的Map。因此,不要使用
它应该
然后你就可以访问
我更希望有一个包含“Name”的结构体,以及我作为参数传递的任何其他内容,但这是快速的第一步,我希望将其作为更新发布,以了解如何至少获取数据并解决我的问题