

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在直接数据来源访问和通过 Lambda 数据来源代理之间进行选择
<a name="choosing-data-source"></a>

借 AWS AppSync 助 and `APPSYNC_JS` the runtime，您可以编写自己的代码，通过使用 AWS AppSync 函数访问您的数据源来实现您的自定义业务逻辑。这使您可以轻松地直接与 Amazon DynamoDB、Aurora OpenSearch Serverless、服务 APIs、HTTP 和其他服务等数据源进行交互， AWS 而无需部署额外的计算服务或基础设施。 AWS AppSync 还可以通过配置 Lambda 数据源轻松地与 AWS Lambda 函数进行交互。Lambda 数据源允许您使用全套功能运行复杂 AWS Lambda的业务逻辑来解析 GraphQL 请求。在大多数情况下，直接连接到其目标数据源的 AWS AppSync 函数将提供您需要的所有功能。在您需要实施 `APPSYNC_JS` 运行时系统不支持的复杂业务逻辑时，您可以将 Lambda 数据来源作为代理以与目标数据来源进行交互。


|  |  |  | 
| --- |--- |--- |
|  | 直接数据源集成 | 作为代理的 Lambda 数据源 | 
| 使用案例 | AWS AppSync 函数直接与 API 数据源交互。 | AWS AppSync 函数调用与 API 数据源交互的 Lambda。 | 
| 运行时 | APPSYNC\$1JS (JavaScript) | 任何支持的 Lambda 运行时 | 
| 代码的最大大小 | 每个函数 32,000 个 AWS AppSync字符 | 每个 Lambda 50 MB（已压缩，用于直接上传） | 
| 外部模块 | 有限——仅支持 APPSYNC\$1JS 的功能 | 是 | 
| 拨打任何 AWS 服务电话 | 是-使用 AWS AppSync HTTP 数据源 | 是-使用 AWS SDK | 
| 访问请求标头 | 是 | 是 | 
| 网络访问 | 否 | 是 | 
| 文件系统访问 | 否 | 是 | 
| 日志和指标 | 是 | 是 | 
| 完全在内部构建和测试 AppSync | 是 | 否 | 
| 冷启动 | 否 | 否-使用预配置的并发性 | 
| 自动扩缩 | 是的——透明地 AWS AppSync | 是-按照 Lambda 中的配置 | 
| 定价 | 不收取额外费用 | 针对 Lambda 使用量收费 | 

AWS AppSync 直接与其目标数据源集成的函数非常适合以下用例：
+  与亚马逊 DynamoDB、Aurora Serverless 和服务互动 OpenSearch 
+  与 HTTP 交互 APIs 并传递传入的标头 
+  使用 HTTP 数据源与 AWS 服务交互（使用提供的数据源角色 AWS AppSync 自动签署请求） 
+  在访问数据来源之前实施访问控制 
+  在完成请求之前对检索的数据实施筛选 
+  通过在解析器管道中按顺序执行 AWS AppSync 函数来实现简单的编排 
+  控制查询和变更中的缓存和订阅连接。

AWS AppSync 使用 Lambda 数据源作为代理的函数非常适合以下用例：
+  使用 Velocity 模板语言 (VTL) 以外的 JavaScript 语言 
+  调整和控制 CPU 或内存以优化性能 
+  导入第三方库或要求使用 `APPSYNC_JS` 中不支持的功能 
+  发出多个网络请求以 and/or 获取文件系统访问权限以完成查询 
+  使用[批处理配置](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-lambda-js.html)对请求进行批处理。