View a markdown version of this page

Amazon S3 ロケーションへのアクセス - AWS Lake Formation

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

Amazon S3 ロケーションへのアクセス

AWS Lake Formation では、 AWS Glue Data Catalog (データカタログ) に登録されたテーブルの Amazon Simple Storage Service (Amazon S3) の基盤となるデータファイルを読み書きできます。これにより、既存の Lake Formation テーブル許可を使用した SQL クエリと直接ファイルアクセスの両方に対する単一のアクセス許可セットが提供されます。Lake Formation は、認証情報供給機能を Data Catalog に登録されている Amazon S3 ロケーションに拡張します。アプリケーションが Data Catalog テーブルの基盤となる Amazon S3 ファイルへのアクセスをリクエストすると、Lake Formation は発信者の既存のテーブルレベルのアクセス許可を評価し、承認された場合は、そのテーブルの登録場所の有効期間が短く、スコープが設定された Amazon S3 認証情報を返します。

Amazon S3 ロケーションへの直接アクセスを有効にする

この機能を有効にするには、次のステップを完了する必要があります。

前提条件

機能フラグを有効にする前に、次の前提条件を完了してください。

  • Amazon S3 ロケーションの登録 – Amazon S3 ロケーションのデータカタログにテーブルをカタログ化し、Amazon S3 バケット所有者アカウントを指定して Lake Formation に登録します。ロケーションを登録すると、その Amazon S3 パスと、そのパスの下にあるすべてのフォルダが登録されます。詳細については、「Amazon S3 ロケーションの登録」を参照してください。

  • Lake Formation アクセス許可の付与 – Lake Formation コンソールまたは API を使用して、データサイエンティストとアプリケーションにテーブルに対する Lake Formation SELECT (または SUPER) アクセス許可を付与します。 APIs Athena や Amazon EMR などのサービスでのテーブルアクセスに Lake Formation を既に使用している場合、これは既に設定されています。

  • フルテーブルアクセスによるアプリケーション統合を有効にする – フルテーブルアクセスによるアプリケーション統合を有効にして、登録されたテーブルの場所への認証情報供給を許可します。詳細については、「フルテーブルアクセスのためのアプリケーション統合」を参照してください。

機能フラグを有効にする

サポートされているエンジンで fs.s3a.lakeformation.access.grants.enabledフラグを有効にします。

fs.s3a.lakeformation.access.grants.enabled = true
  • Amazon EC2 での Amazon EMR – EMR 7.13 以降

  • Amazon EMR on EKS – EMR 7.13 以降

  • Amazon EMR Serverless – EMR 7.13 以降

設定が完了すると、標準 APIs を使用して EMR からデータファイルをすぐに読み書きできます。

Amazon EMR 統合の詳細については、「Amazon EMR 管理ガイド」の「Lake Formation パスベースの認証情報供給」を参照してください。

仕組み

Lake Formation ベースの Amazon S3 ロケーションアクセスは、次のフローに従います。

  1. プリンシパルまたはロールは、Amazon EMR Spark ジョブやデータ処理パイプラインなどのサービスを通じて Amazon S3 データファイルへのアクセスをリクエストします。

  2. EMR と統合された AWS SDK プラグインは、Amazon S3 リクエストをインターセプトし、Lake Formation GetTemporaryDataLocationCredentials API を呼び出します。

  3. Lake Formation は、Amazon S3 パスが登録済みロケーションとカタログ化されたテーブルに対応しているかどうかをチェックし、関連するAWS Glueテーブルに対する発信者のアクセス許可を評価します。

  4. 呼び出し元がフルテーブルアクセスを持つ対応するテーブルに対して SELECTまたは SUPER アクセス許可を持っている場合、Lake Formation はその Amazon S3 ロケーションに限定された一時的な認証情報を提供します。 は READ 認証情報SELECTを付与し、 は READWRITE 認証情報SUPERを付与します。

  5. プラグインはこれらの認証情報を使用して Amazon S3 リクエストを完了し、Amazon S3 はデータをアプリケーションに提供します。

  6. 認証情報供給オペレーションはすべて CloudTrail に記録され、データアクセスの監査証跡を提供します。

このプロセスは透過的であり、標準のファイルベースの APIs で既存の Lake Formation アクセス許可を使用するだけです。

# Read raw data (Lake Formation-based S3 Location access) raw_df = spark.read.json("s3://finance-datalake/raw/transactions/dt=2024-03-21/") # Read governed data (Lake Formation-based S3 Location access) transactions_df = spark.read.parquet("s3://data-lake/transactions/year=2026/") # Write processed data (Lake Formation-based S3 Location access) processed_df.write \ .mode("append") \ .partitionBy("transaction_date") \ .parquet("s3://finance-datalake/processed/transactions/") print("ETL complete. Records written:", processed_df.count())
アクセス許可の要件

この機能は現在、呼び出し元が完全なテーブルアクセス権を持っている場合にのみ認証情報を提供します。つまり、行または列フィルターのないすべての列SELECTに対して認証情報を提供します。テーブルに行レベルまたは列レベルのフィルターが適用されている場合、発信者はそれらのフィルターを適用できる Athena、Amazon EMR、AWS Glue、Amazon Redshift などの信頼できるエンジンを引き続き使用する必要があります。これにより、セキュリティの境界が一貫して維持されます。

クロスアカウントアクセス

Lake Formation はAmazon S3ロケーションへのアクセスを簡素化し、クロスアカウント共有機能を使用します。Lake Formation を介して別の AWS アカウントとテーブルを共有する場合、受信者は、同じ完全なテーブルアクセス要件に従って、Lake Formation アクセス許可を使用して基盤となる Amazon S3 データファイルにアクセスできます。

この機能は、クロスアカウントアクセスのための Lake Formation のリソースリンクメカニズムをサポートしています。コンシューマーアカウントが共有テーブルに対するアクセス許可を持っている場合、Lake Formation は登録済みアカウントの Amazon S3 ロケーションに限定された認証情報を提供し、個別の Amazon S3 バケットポリシーやクロスアカウント IAM ロールを必要とせずに、シームレスなクロスアカウントデータアクセスを可能にします。

ネストされた Amazon S3 の場所

複数のテーブルが同じバケット内のネストされた場所を指す場合、Lake Formation は次の動作を適用します。

  • にアクセスするとs3://bucket、バケットレベルで登録されたテーブルに対応するアクセス許可が付与されます。

  • にアクセスするとs3://bucket/folder1、その特定のパスに登録されたテーブルに対応するアクセス許可が付与されます。

  • 登録されたテーブルがないフォルダ ( などs3://bucket/folder2) にアクセスするには、最も近い親登録場所からアクセス許可を受け取ります。

  • 同じ場所に複数のテーブルが登録されている場合、Lake Formation はアクセス許可の競合によりエラーを返します。

監査とコンプライアンス

認証情報供給オペレーションはすべて CloudTrail に記録され、データアクセスの監査証跡を提供します。Lake Formation が GetTemporaryDataLocationCredentials API を介して認証情報を提供すると、CloudTrail は以下を記録します。

  • プリンシパル (ユーザーまたはロール)

  • タイムスタンプ

  • Amazon S3 ロケーション

  • 関連付けられたAWS Glueテーブル

これらの認証情報を使用して行われた後続の Amazon S3 API コールも Amazon S3 データイベントとして CloudTrail に記録され、コンテキストによって Lake Formation アクセス許可の付与にリンクされます。これにより、監査人は、どのユーザーがどのデータ、いつ、どのアクセス許可パスにアクセスしたかを完全に単一の CloudTrail ログストリームで把握できます。

サポートされている AWS サービス

Lake Formation は、Amazon S3 ロケーションへのアクセスを簡素化し、以下と連携します。

  • Amazon EC2 での Amazon EMR (EMR 7.13 以降)

  • Amazon EMR on EKS (EMR 7.13 以降)

  • Amazon EMR Serverless (EMR 7.13 以降)

サードパーティーサービス用のオープンソースプラグイン

API または が提供するオープンソースプラグインを使用して APIs 、 Apache Spark または Trinoアプリケーションを統合することもできます AWS。詳細については、GitHub のaws-lakeformation-accessgrants-plugin-java-v2」を参照してください。

考慮事項

Amazon S3 ロケーションで認証情報供給を使用する場合は、次の考慮事項に注意してください。

  • Amazon S3 ロケーションの認証情報供給は、クロスリージョンではサポートされていません。

  • 認証情報供給は、テーブルのプライマリロケーションとして含まれる Amazon S3 ロケーションでサポートされています。