

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

# Lake Formation 應用程式整合 API 操作的工作流程
<a name="api-overview"></a>

以下是應用程式整合 API 操作的工作流程：

1. 使用者使用整合的第三方查詢引擎提交資料查詢或請求。查詢引擎會擔任代表使用者或使用者群組的 IAM 角色，並擷取呼叫應用程式整合 API 操作時要使用的信任憑證。

1.  查詢引擎會呼叫 `GetUnfilteredTableMetadata`，如果它是分割資料表，則查詢引擎會呼叫 從 Data Catalog `GetUnfilteredPartitionsMetadata`擷取中繼資料和政策資訊。

1.  Lake Formation 會執行請求的授權。如果使用者沒有資料表的適當許可，則會擲回 *AccessDeniedException*。

1. 作為請求的一部分，查詢引擎會傳送其支援的篩選。陣列中可以傳送兩個旗標：*COLUMN\$1PERMISSIONS* 和 *CELL\$1FILTER\$1PERMISSION*。如果查詢引擎不支援任何這些功能，且該功能的資料表上存在政策，則會擲回 *PermissionTypeMismatchException*，且查詢會失敗。這是為了避免資料外洩。

1. 傳回的回應包含下列項目：
   + 資料表的整個結構描述，以便查詢引擎可以使用它從儲存體剖析資料。
   + 使用者可存取的授權資料欄清單。如果授權資料欄清單是空的，則表示使用者具有`DESCRIBE`許可，但沒有`SELECT`許可，且查詢失敗。
   + 標記 `IsRegisteredWithLakeFormation`，指出 Lake Formation 是否可以將登入資料提供給此資源資料。如果傳回 false，則應該使用客戶的登入資料來存取 Amazon S3。
   +  如果`CellFilters`有任何 應套用至資料列的 清單。此清單包含要評估每一列的資料欄和表達式。只有在 *CELL\$1FILTER\$1PERMISSION* 作為請求的一部分傳送，且對呼叫使用者的資料表有資料篩選條件時，才應填入此項目。

1. 擷取中繼資料之後，查詢引擎會呼叫 `GetTemporaryGlueTableCredentials`或 `GetTemporaryGluePartitionCredentials` 以取得 AWS 登入資料，以從 Amazon S3 位置擷取資料。

1. 查詢引擎會從 Amazon S3 讀取相關物件，根據其在步驟 2 中收到的政策篩選資料，並將結果傳回給使用者。

的應用程式整合 API 操作Lake Formation包含用於設定與第三方查詢引擎整合的其他內容。您可以在[登入資料販賣 API 操作區段中查看操作詳細資訊。](aws-lake-formation-api-credential-vending.md)

 `QuerySessionContext` 是查詢引擎可以針對這些應用程式整合 API 操作額外傳送至 Lake Formation的結構。它允許 Lake Formation 存放和利用特定查詢的其他內容。以下提供如何使用 [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html) 的範例：

1. 查詢引擎會進行`GetInternalUnfilteredMetadata`呼叫，在請求中傳入包含唯一查詢 ID 的 QSC 結構：

   ```
   {
       "QuerySessionContext": {
           "QueryId": "your-unique-identifier-here"
       }
   }
   ```

1. `GetInternalUnfilteredMetadata` 呼叫會在回應中傳回`QueryAuthorizationId`字串。在輸入中接受 QSC 結構的下一個 （和任何後續） 查詢呼叫上，查詢引擎會傳遞現在也包含 `QueryAuthorizationId`傳回之 的相同 QSC 結構Lake Formation。假設下一次呼叫是 `GetTemporaryGlueTableCredentials`；請求將包含：

   ```
   {
       "QuerySessionContext": {
           "QueryAuthorizationId": "lf-returned-query-authz-id-here",
           "QueryId": "your-unique-identifier-here"
       },
   }
   ```