我一直在研究AWS AppSync,以创建一个以DynamoDB为数据存储的托管GraphQL API。我知道AppSync可以使用Apache Velocity模板语言作为解析器从dynamoDB获取数据。然而,这意味着我必须在编程堆栈中引入一种额外的语言,所以我更愿意在JavascriptNode.js中编写解析器。
使用lambda函数从DynamoDB中获取数据有什么缺点吗?有什么理由使用VTL而不是lambda来写解析器?
使用lambda函数作为AppsSync解析器有利有弊(尽管注意你仍然需要从VTLs调用lambdas)。
优点
long
表中的整数(DynamoDB的数字类型支持 long
但AppSync解析器只支持32位整数。如果你使用lambda,你可以绕过这个问题,例如在通过AppSync解析器层传输之前将长字符串序列化为字符串)--请参见(当前)开放的功能请求。https:/github.comawsaws-appsync-communityissues21。缺点
如果你做的是简单的vanilla DynamoDB操作,值得一试VTLs。AWS的文档在这方面很好用。https:/docs.aws.amazon.comappsynclatestdevguideresolver-mapping-template-reference-dynamodb.html。
如果你正在做任何轻度复杂的事情,比如marshalling字段,循环,或者一般的黑客非DRY代码,那么lambdas绝对值得考虑,因为它可以提高你的代码编写和维护速度,前提是你对额外的延迟和成本感到满意。