

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

# Lake Formation for Amazon EMR Spark を使用した S3 パスベースのアクセス
<a name="lake-formation-path-based-credential-vending"></a>

Amazon EMR リリース 7.13.0 以降では、[AWS Lake Formation Access Grants プラグイン](https://docs.aws.amazon.com/lake-formation/latest/dg/accessing-s3-locations.html)を使用して、Lake Formation に登録された S3 パスの一時的な認証情報を取得できます。これにより、S3 パスを直接参照する Spark クエリは、フルテーブルアクセス (FTA) が提供する既存のテーブル名ベースの認証情報供給に加えて、Lake Formation が提供する認証情報を使用できます。

Lake Formation Access Grants プラグインは、Spark の S3A ファイルシステムと統合されます。有効にすると、S3A はプラグインを使用して Lake Formation [GetTemporaryDataLocationCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryDataLocationCredentials.html) API を呼び出し、Lake Formation に登録されたテーブルに属する S3 パスの一時的な認証情報を取得します。

このプラグインは、Spark ジョブがテーブル名を使用するのではなく、S3 パスを直接参照してデータを読み書きする場合に便利です (例: `spark.read.parquet("s3a://my-bucket/my-table/")`)。プラグインは、Lake Formation アクセスが拒否されたときに、S3 Access Grants または IAM ロール認証情報へのオプションのフォールバックもサポートします。

## フルテーブルアクセス (FTA) との関係
<a name="lake-formation-path-based-relationship-fta"></a>

既存のフルテーブルアクセス機能は、テーブル名に基づいて認証情報を提供する [GetTemporaryGlueTableCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGlueTableCredentials.html) API を使用します。Lake Formation Access Grants プラグインは、S3 パスに基づいて認証情報を提供する [GetTemporaryDataLocationCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryDataLocationCredentials.html) API を使用します。

両方の機能を一緒に使用できます。両方を有効にすると、FTA 認証情報はテーブル名クエリに優先され、プラグインは直接 S3 パスクエリを処理します。

## 前提条件
<a name="lake-formation-path-based-prerequisites"></a>

Lake Formation Access Grants プラグインを使用する前に、次の手順を実行します。
+ Amazon EMR 環境のフルテーブルアクセス (FTA) を設定します。手順については、「」を参照してください。
+ Lake Formation コンソールで、所有者アカウントに S3 パスを登録します。

  1. **データレイクの場所**に移動します。

  1. 場所を選択し、**所有者アカウントで S3 パスの登録**を有効にします。
+ ランタイムロールに、テーブルに対する適切な Lake Formation アクセス許可を付与します。
  + テーブルデータを読み取るには、ランタイムロールにテーブルに対する完全な`SELECT`アクセス許可を付与します。
  + テーブルデータを変更するには、テーブルに対するランタイムロールの`SUPER`アクセス許可を付与します。

## Lake Formation Access Grants プラグインを有効にする
<a name="lake-formation-path-based-enable"></a>

プラグインを有効にするには、Spark セッションで次の S3A 設定プロパティを設定します。


**Lake Formation Access Grants プラグインの設定プロパティ**  

| プロパティ | デフォルト  | 説明  | 
| --- | --- | --- | 
| fs.s3a.lakeformation.access.grants.enabled | FALSE | Lake Formation Access Grants プラグインを有効にします。 | 
| fs.s3a.lakeformation.access.grants.fallback.to.iam | FALSE | Lake Formation がアクセスを拒否した場合、S3 Access Grants または IAM ロール認証情報へのフォールバックを有効にします。 | 

## フォールバック動作
<a name="lake-formation-path-based-fallback"></a>

`fs.s3a.lakeformation.access.grants.fallback.to.iam` が に設定されている場合`true`、Lake Formation がアクセスを拒否すると、プラグインはフォールバックチェーンを使用します。これは、一部の S3 パスが Lake Formation に登録され、他のパスが S3 Access Grants または IAM ポリシーを通じて管理される場合に便利です。

フォールバックを有効にすると、プラグインは次の順序で認証情報の取得を試みます。

1. **Lake Formation** – プラグインは [GetTemporaryDataLocationCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryDataLocationCredentials.html) を呼び出します。Lake Formation がアクセスを許可すると、プラグインはそれらの認証情報を返します。

1. **S3 Access Grants** – Lake Formation がアクセスを拒否した場合、プラグインは S3 Access Grants がリクエストされたパスの認証情報を提供できるかどうかを確認します。S3 Access Grants インスタンスがパスをカバーし、発信者が一致する許可を持っている場合、プラグインはそれらの認証情報を使用します。

1. **IAM ロール** – Lake Formation と S3 Access Grants の両方がアクセスを拒否した場合、プラグインはジョブにアタッチされた IAM ロール認証情報にフォールバックします。

## 考慮事項と制限事項
<a name="lake-formation-path-based-considerations"></a>
+ プラグインは、Apache Hive、Apache Hudi、Delta Lake テーブル形式をサポートしています。Apache Iceberg は現在サポートされていません。
+ プラグインは現在、Amazon EMR Spark Fine-Grained Access Control (FGAC) モードではサポートされていません。
+ パスベースの認証情報供給では、テーブルと Glue データカタログ内の S3 の場所との間に 1:1 AWS のマッピングが必要です。