我正在开发一个 AWS AppSync 项目,使用 CDK(云开发套件)来定义我的解析器。我遇到过两种在解析器函数中编写 DynamoDB 查询操作的不同方法,但我不确定哪一种是最佳实践。以下是两种方法:
方法1:使用ddb.query
import * as ddb from "@aws-appsync/utils/dynamodb";
export function request(ctx) {
return ddb.query({
// query parameters
});
}
方法2:使用操作对象
export function request(ctx) {
return {
operation: "Query",
// other parameters
};
}
我想知道:
使用 CDK 进行 AppSync 时哪种方法被认为是最佳实践? 这些方法之间是否存在性能差异? 每种方法如何影响可维护性和可读性? 是否存在一种方法明显优于另一种方法的特定场景?
一些额外的背景:
我在我的 CDK 项目中使用 TypeScript。 我的解析器作为 AppSync API 的一部分部署在 AWS 中。 我主要使用 DynamoDB 作为我的数据源。 任何在 CDK 环境中使用这些方法的见解或经验将不胜感激!
在 AWS 控制台中测试方法 1 时,出现错误:
This syntax requires an imported helper but module 'tslib' cannot be found.
但是,我的查询仍在运行。使用方法 2,我没有遇到任何错误,并且查询按预期工作。
您提到的创建 JavaScript 解析器的两种方法都是正确的。
第一种方法是使用 AppSync 实用程序库
@aws-appsync/utils
。这个库使得用 TypeScript 编写解析器变得非常容易。您可以在此处阅读有关其功能的更多信息 - 用于解析器和函数的 AWS AppSync JavaScript 运行时功能。
在第二种方法中,您手动构建连接的数据源所需的请求和响应对象,与第一种方法一样,您使用 AppSync 库来执行此操作。
IMO,由于以下原因,您应该使用 AppSync Utility 库(方法 1):
请参阅以下文档和视频,了解如何使用 AWS CDK 正确部署 AppSync 解析器。