本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在直接数据来源访问和通过 Lambda 数据来源代理之间进行选择
使用 AWS AppSync 和APPSYNC_JS运行时,您可以编写自己的代码,通过使用 AWS AppSync 函数访问数据源来实现自定义业务逻辑。这使您可以轻松地直接与 Amazon DynamoDB、Aurora 无服务器、 OpenSearch 服务、HTTP API 和其他 AWS 服务等数据源进行交互,而无需部署额外的计算服务或基础设施。 AWS AppSync 还可以通过配置 Lambda 数据源轻松与 AWS Lambda 函数进行交互。Lambda 数据源允许您使用全套功能运行复杂 AWS Lambda的业务逻辑来解决 GraphQL 请求。在大多数情况下,直接连接到其目标数据源的 AWS AppSync 函数将提供您需要的所有功能。在您需要实施 APPSYNC_JS 运行时系统不支持的复杂业务逻辑时,您可以将 Lambda 数据来源作为代理以与目标数据来源进行交互。
| 直接数据源集成 | Lambda 数据源作为代理 | |
| 使用案例 | AWS AppSync 函数直接与 API 数据源交互。 | AWS AppSync 函数调用与 API 数据源交互的 Lambda。 |
| 运行时 | APPSYNC_JS (JavaScript) |
任何支持的 Lambda 运行时 |
| 代码的最大大小 | 每个函数 32,000 个 AWS AppSync字符 | 每个 Lambda 50 MB(压缩,用于直接上传) |
| 外部模块 | 有限-仅支持 APPSYNC_JS 的功能 | 是 |
| 拨打任何 AWS 服务电话 | 是-使用 AWS AppSync HTTP 数据源 | 是-使用 AWS SDK |
| 访问请求标头 | 是 | 是 |
| 网络访问 | 否 | 是 |
| 文件系统访问 | 否 | 是 |
| 日志记录和指标 | 是 | 是 |
| 完全在内部构建和测试 AppSync | 是 | 否 |
| 冷启动 | 否 | 否-使用预置的并发性 |
| Auto-scaling | 是的——透明地说 AWS AppSync | 是-按照 Lambda 中的配置 |
| 定价 | 不收取额外费用 | 按使用 Lambda 收费 |
AWS AppSync 直接与目标数据源集成的函数非常适合以下用例:
-
与亚马逊 DynamoDB、Aurora 无服务器和服务进行交互 OpenSearch
-
与 HTTP API 交互并传递传入标头
-
使用 HTTP 数据源与 AWS 服务进行交互(使用提供的数据源角色 AWS AppSync 自动签署请求)
-
在访问数据来源之前实施访问控制
-
在完成请求之前对检索的数据实施筛选
-
通过在解析器管道中顺序执行 AWS AppSync 函数,实现简单的编排
-
控制查询和变更中的缓存和订阅连接。
AWS AppSync 使用 Lambda 数据源作为代理的函数非常适合以下用例:
-
使用 Velocity 模板语言 (VTL) 以外的 JavaScript 语言
-
调整和控制 CPU 或内存以优化性能
-
导入第三方库或要求使用
APPSYNC_JS中不支持的功能 -
发出多个网络请求 and/or 获取文件系统访问权限以完成查询
-
使用批处理配置对请求进行批处理。