AWS AppSync 解析器:ddb.query 与 CDK 中的原始操作对象

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

我正在开发一个 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,我没有遇到任何错误,并且查询按预期工作。

typescript amazon-web-services amazon-dynamodb aws-cdk aws-appsync
1个回答
0
投票

您提到的创建 JavaScript 解析器的两种方法都是正确的。

第一种方法是使用 AppSync 实用程序库

@aws-appsync/utils
。这个库使得用 TypeScript 编写解析器变得非常容易。您可以在此处阅读有关其功能的更多信息 - 用于解析器和函数的 AWS AppSync JavaScript 运行时功能

在第二种方法中,您手动构建连接的数据源所需的请求和响应对象,与第一种方法一样,您使用 AppSync 库来执行此操作。

IMO,由于以下原因,您应该使用 AppSync Utility 库(方法 1):

  • 易于编写新的解析器或修改现有的解析器
  • 无需手动构造请求和响应对象
  • 您可以获得APPSYNC_JS环境支持的许多其他内置模块和实用程序支持。

如何使用 CDK 部署 TypeScript 解析器

请参阅以下文档和视频,了解如何使用 AWS CDK 正确部署 AppSync 解析器。

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