AWS AppSync Resolvers Lambda函数与Velocity模板语言(VTL)的比较

问题描述 投票:0回答:1

我一直在研究AWS AppSync,以创建一个以DynamoDB为数据存储的托管GraphQL API。我知道AppSync可以使用Apache Velocity模板语言作为解析器从dynamoDB获取数据。然而,这意味着我必须在编程堆栈中引入一种额外的语言,所以我更愿意在JavascriptNode.js中编写解析器。

使用lambda函数从DynamoDB中获取数据有什么缺点吗?有什么理由使用VTL而不是lambda来写解析器?

amazon-web-services aws-lambda graphql aws-appsync
1个回答
4
投票

使用lambda函数作为AppsSync解析器有利有弊(尽管注意你仍然需要从VTLs调用lambdas)。

优点

  • 更容易编写和维护
  • 更强大的请求和响应的集合和验证功能
  • 常见的功能可以比VTLs更DRY(不支持宏)。
  • 更灵活的调试和记录
  • 更容易测试
  • 提供更好的工具和绒毛
  • 如果您需要支持 long 表中的整数(DynamoDB的数字类型支持 long但AppSync解析器只支持32位整数。如果你使用lambda,你可以绕过这个问题,例如在通过AppSync解析器层传输之前将长字符串序列化为字符串)--请参见(当前)开放的功能请求。https:/github.comawsaws-appsync-communityissues21。

缺点

  • 每次调用的额外延迟
  • 冷启动=更多的延迟(尽管通常可以通过保持lambdas的温度来减少延迟,如果这对您的用例来说是个问题的话。
  • 额外费用
  • 每个lambda的额外资源,吃掉了固定的200个限制。

如果你做的是简单的vanilla DynamoDB操作,值得一试VTLs。AWS的文档在这方面很好用。https:/docs.aws.amazon.comappsynclatestdevguideresolver-mapping-template-reference-dynamodb.html。

如果你正在做任何轻度复杂的事情,比如marshalling字段,循环,或者一般的黑客非DRY代码,那么lambdas绝对值得考虑,因为它可以提高你的代码编写和维护速度,前提是你对额外的延迟和成本感到满意。

© www.soinside.com 2019 - 2024. All rights reserved.