

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在直接資料來源存取和透過 Lambda 資料來源代理之間進行選擇
<a name="choosing-data-source"></a>

透過 AWS AppSync 和`APPSYNC_JS`執行時間，您可以使用 AWS AppSync 函數存取資料來源，撰寫自己的程式碼來實作自訂商業邏輯。這可讓您輕鬆地直接與資料來源互動，例如 Amazon DynamoDB、Aurora Serverless、OpenSearch Service、HTTP APIs 和其他 AWS 服務，而無需部署額外的運算服務或基礎設施。 AWS AppSync 也可透過設定 Lambda 資料來源，輕鬆與 AWS Lambda 函數互動。Lambda 資料來源可讓您使用 AWS Lambda的完整集功能來執行複雜的商業邏輯，以解決 GraphQL 請求。在大多數情況下，直接連接到其目標資料來源的 an AWS AppSync 函數將提供您需要的所有功能。在您需要實作`APPSYNC_JS`執行時間不支援的複雜商業邏輯的情況下，您可以使用 Lambda 資料來源做為代理來與目標資料來源互動。


|  |  |  | 
| --- |--- |--- |
|  | 直接資料來源整合 | Lambda 資料來源做為代理 | 
| 使用案例 | AWS AppSync functions interact directly with API data sources. | AWS AppSync functions call Lambdas that interact with API data sources. | 
| Runtime | APPSYNC\$1JS (JavaScript) | 任何支援的 Lambda 執行時間 | 
| Maximum size of code | per AWS AppSync 函數 32，000 個字元 | 每個 Lambda 50 MB （壓縮，用於直接上傳） | 
| External modules | 有限 - 僅限 APPSYNC\$1JS 支援的功能 | 是 | 
| Call any AWS service | 是 - Using AWS AppSync HTTP 資料來源 | 是 - 使用 AWS SDK | 
| Access to the request header | 是 | 是 | 
| Network access | 否 | 是 | 
| File system access | 否 | 是 | 
| Logging and metrics | 是 | 是 | 
| Build and test entirely within AppSync | 是 | 否 | 
| Cold start | 否 | 否 - 使用佈建並行 | 
| Auto-scaling | 是 - 透明地 by AWS AppSync | 是 - 如 Lambda 中所設定 | 
| Pricing | 不收取其他費用 | 按 Lambda 用量收費 | 

直接與其目標資料來源整合的AWS AppSync 函數非常適合下列使用案例：
+  與 Amazon DynamoDB、Aurora Serverless 和 OpenSearch Service 互動
+  與 HTTP APIs 互動並傳遞傳入標頭 
+  使用 HTTP 資料來源與 AWS 服務互動 （使用提供的資料來源角色 AWS AppSync 自動簽署請求） 
+  在存取資料來源之前實作存取控制 
+  在履行請求之前，實作擷取資料的篩選 
+  在解析程式管道中以循序執行 AWS AppSync 函數來實作簡單的協同運作 
+  在查詢和變動中控制快取和訂閱連線。

使用 Lambda 資料來源做為代理的AWS AppSync 函數非常適合下列使用案例：
+  使用 JavaScript 或速度範本語言 (VTL) 以外的語言 
+  調整和控制 CPU 或記憶體以最佳化效能 
+  在 中匯入第三方程式庫或需要不支援的功能 `APPSYNC_JS` 
+  提出多個網路請求和/或取得檔案系統存取權以滿足查詢 
+  使用批次處理[組態批次處理](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-lambda-js.html)請求。