

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アプリケーション統合 API 操作の Lake Formation ワークフロー
<a name="api-overview"></a>

アプリケーション統合 API 操作のワークフローは次のとおりです。

1. ユーザーが、統合されたサードパーティークエリエンジンを使用してデータへのクエリまたはリクエストを送信します。クエリエンジンがユーザーまたはユーザーのグループを表す IAM ロールを引き受けて、信頼できる認証情報を取得し、これを使用してアプリケーション統合 API 操作を呼び出します。

1.  クエリエンジンが `GetUnfilteredTableMetadata` (パーティション化されたテーブルの場合は `GetUnfilteredPartitionsMetadata`) を呼び出し、Data Catalog からメタデータとポリシー情報を取得します。

1.  Lake Formation がリクエストの認可を実行します。ユーザーがテーブルに対する適切な許可を持っていない場合は、*AccessDeniedException* がスローされます。

1. リクエストの一部として、クエリエンジンが、サポートするフィルタリングを送信します。配列内で送信できるフラグには、*COLUMN\_PERMISSIONS* と *CELL\_FILTER\_PERMISSION* の 2 つがあります。クエリエンジンがこれらの機能のどちらもサポートしておらず、機能に関するポリシーがテーブルに存在する場合は、*PermissionTypeMismatchException* がスローされ、クエリが失敗します。これは、データ漏洩を防ぐためのものです。

1. 返される応答には以下が含まれます。
   + テーブルの完全なスキーマ。クエリエンジンがこれを使用してストレージからのデータを解析できるようにするためです。
   + ユーザーがアクセスできる認可された列のリスト。認可された列のリストが空の場合は、ユーザーに `DESCRIBE` 許可があっても `SELECT` 許可がないことを示し、クエリが失敗します。
   + `IsRegisteredWithLakeFormation` というフラグ。これは、Lake Formation がこのリソースデータに認証情報を供給できるかどうかを示します。これが false を返す場合、Amazon S3 へのアクセスには顧客の認証情報を使用する必要があります。
   +  データの行に適用する必要がある `CellFilters` のリスト (存在する場合)。このリストには、列と、各行を評価する式が含まれています。これは、*CELL\_FILTER\_PERMISSION* をリクエストの一部として送信し、テーブルに対するデータフィルターが呼び出し側のユーザーにある場合にのみ入力されます。

1. メタデータを取得すると、クエリエンジンは `GetTemporaryGlueTableCredentials`または `GetTemporaryGluePartitionCredentials`を呼び出して、Amazon S3 の場所からデータを取得するための AWS 認証情報を取得します。

1. クエリエンジンが Amazon S3 から関連するオブジェクトを読み取り、ステップ 2 で受け取ったポリシーに基づいてデータをフィルタリングして、ユーザーに結果を返します。

Lake Formation のアプリケーション統合 API 操作には、サードパーティクエリエンジンとの統合を設定するための追加のコンテンツが含まれています。操作の詳細については、「[認証情報供給 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"
       },
   }
   ```