AWS

Lake Formation の新 S3 直接ファイルアクセス — SQL とファイルの権限を統合

従来の Lake Formation は Athena・Redshift Spectrum・Spark SQL などの統合サービスを介した SQL クエリに対してのみテーブル権限を適用していました。 アプリケーションコードが S3 ファイルに直接アクセスするには、別途 IAM ポリシーや S3 バケットポリシーが必要でした。 2026年6月の新機能では、Lake Formation テーブル権限に基づいて一時的なスコープ付き S3 認証情報を取得できるようになり、 SQL クエリとファイルレベルアクセスを単一の権限セットで管理できるようになりました。

従来の仕組み — 統合サービス経由の SQL アクセス

Lake Formation は元々、Glue データカタログに登録されたテーブルへのSQL クエリを制御するサービスとして設計されました。 Athena や Spark SQL などの統合サービスがクエリを実行する際に、Lake Formation がユーザーのテーブル権限を確認し、 バックエンドの S3 へのアクセスを統合サービスエンジン側に許可する仕組みです。

ユーザー SQL クエリ Lake Formation 権限確認 Athena / Spark SQL (統合サービス) Amazon S3 データファイル 統合サービスが S3 を読む(ユーザーは S3 認証情報を持たない)

この設計では、ユーザーやアプリケーションコードは S3 の認証情報を直接受け取りません。 モデルトレーニングや特徴量エンジニアリングのように、Spark ジョブから s3.get_object() などで直接 S3 ファイルにアクセスしたい場合は、 Lake Formation とは別に IAM ロールや S3 バケットポリシーを設定する必要がありました。 結果として、SQL 用と直接ファイルアクセス用で権限管理が二重になる問題がありました。

新機能 — テーブル権限に基づく一時的 S3 認証情報の発行

2026年6月11日のリリースで、Lake Formation は新しい API GetTemporaryDataLocationCredentials を追加しました。 この API を呼び出すと、呼び出し元のテーブル権限に基づいてスコープ付きの一時的 S3 認証情報が返ります。 アプリケーションはこの認証情報を使って S3 ファイルに直接アクセスできます。

権限と S3 アクセスのマッピング

Lake Formation テーブル権限 発行される S3 認証情報の権限
SELECT 読み取り専用 (READ)
SUPER 読み取り + 書き込み (READ_WRITE)

発行される認証情報は登録済み S3 ロケーションにスコープが絞られるため、他のバケットへの横断は不可能です。

API の使用例

# GetTemporaryDataLocationCredentials で一時認証情報を取得する例
import boto3

lakeformation = boto3.client('lakeformation', region_name='ap-northeast-1')

response = lakeformation.get_temporary_data_location_credentials(
    ResourceArn='arn:aws:s3:::my-data-lake/processed/sales/',
    Permissions=['SELECT'],   # READ アクセスを要求
    DurationSeconds=3600
)

# 返却された認証情報で直接 S3 操作
s3 = boto3.client(
    's3',
    aws_access_key_id=response['Credentials']['AccessKeyId'],
    aws_secret_access_key=response['Credentials']['SecretAccessKey'],
    aws_session_token=response['Credentials']['SessionToken'],
)
s3.download_file('my-data-lake', 'processed/sales/data.parquet', '/tmp/data.parquet')

対応バージョンと統合方法

この機能は以下の環境で利用できます。

EMR で Full Table Access (FTA) モードを使用した場合、Lake Formation に登録済みのテーブルには Lake Formation 認証情報が自動的に使われ、未登録のテーブルにはランタイムロールの認証情報が使われます。 Apache Spark または Trino アプリケーションとの統合は、API 直接呼び出しのほか、 AWS が提供するオープンソースプラグインでも対応しています。

監査ログの統合

SQL クエリとファイルレベルの両方のアクセスが AWS CloudTrail に記録されます。 これにより、これまでは SQL 操作と S3 アクセスで分かれていた監査証跡を統一できます。

まとめ — 何が変わったか

観点 従来 新機能
SQL クエリのアクセス制御 Lake Formation で管理 Lake Formation で管理(変わらず)
S3 直接ファイルアクセス IAM / S3 バケットポリシーが別途必要 Lake Formation テーブル権限から一時認証情報を発行
権限管理の数 SQL 用と S3 用の二重管理 単一の権限セットで統一
監査ログ SQL と S3 で分散 CloudTrail で統一

参照(一次情報)

← 目次に戻る