Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS Glue Iceberg REST エンドポイントを使用した Amazon S3 テーブルへのアクセス

フォーカスモード
AWS Glue Iceberg REST エンドポイントを使用した Amazon S3 テーブルへのアクセス - Amazon Simple Storage Service

S3 テーブルバケットが AWS Glue Data Catalog と統合されると、PyIceberg や Spark などの Apache Iceberg 互換クライアントから S3 テーブルに接続するために AWS Glue Iceberg REST エンドポイントを使用できます。AWS Glue Iceberg REST エンドポイントは、Iceberg テーブルを操作するための標準化されたインターフェイスを提供する Iceberg REST Catalog Open API 仕様を実装しています。エンドポイントを使用して S3 テーブルにアクセスするには、IAM ポリシーと AWS Lake Formation 許可を組み合わせてアクセス許可を設定する必要があります。以降のセクションでは、アクセスの設定方法、具体的には、必要な IAM ロールの作成、必要なポリシーの定義、データベースレベルとテーブルレベルの両方のアクセスに対する Lake Formation 許可の設定などについて説明します。

PyIceberg を使用したエンドツーエンドのチュートリアルについては、「AWS Glue Iceberg REST エンドポイントを通じて PyIceberg により Amazon S3 Tables のデータにアクセスする」を参照してください。

クライアント用の IAM ロールを作成する

AWS Glue エンドポイントを通じてテーブルにアクセスするには、AWS Glue および Lake Formation アクションに対するアクセス許可を付与した IAM ロールを作成する必要があります。この手順では、このロールを作成し、そのアクセス許可を設定する方法について説明します。

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 左のナビゲーションペインの [ポリシー] を選択します。

  3. [ポリシーを作成] を選択し、ポリシーエディタで [JSON] を選択します。

  4. AWS Glue および Lake Formation アクションへのアクセス許可を付与する次のインラインポリシーを追加します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow" "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3_table_bucket_name>", "arn:aws:glue:<region>:<account-id>:table/s3tablescatalog/<s3_table_bucket_name>/<namespace>/*", "arn:aws:glue:<region>:<account-id>:database/s3tablescatalog/<s3_table_bucket_name>/<namespace>" ] } ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }

Lake Formation でアクセスを定義する

Lake Formation は、データレイクテーブルに対するきめ細かなアクセスコントロールを提供します。S3 バケットを AWS Glue Data Catalog と統合すると、テーブルは Lake Formation のリソースとして自動的に登録されます。これらのテーブルにアクセスするには、IAM ポリシーのアクセス許可に加えて、特定の Lake Formation 許可を IAM アイデンティティに付与する必要があります。

以下の手順では、Lake Formation のアクセスコントロールを適用して、Iceberg クライアントがテーブルに接続できるようにする方法について説明します。これらのアクセス許可を適用するには、データレイク管理者としてサインインする必要があります。

外部エンジンによるテーブルデータへのアクセスを許可する

Lake Formation では、外部エンジンがデータにアクセスできるように、テーブルへのフルアクセスを有効にする必要があります。これにより、サードパーティーアプリケーションは、リクエストされたテーブルに対するフルアクセス許可を付与した IAM ロールを使用する際に、Lake Formation から一時的な認証情報を取得できます。

Lake Formation コンソール (‭‬https://console.aws.amazon.com/lakeformation/‬) を開きます。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、データレイク管理者としてサインインします。

  2. ナビゲーションペインの [管理] で、[アプリケーションの統合設定] を選択します。

  3. [外部エンジンに、Amazon S3 ロケーション内のデータに対するフルアクセス許可を付与する] を選択します。次に、[保存] を選択します。

テーブルリソースに対する Lake Formation 許可の付与

次に、Iceberg 互換クライアント用に作成した IAM ロールに Lake Formation アクセス許可を付与します。これらのアクセス許可により、ロールは名前空間にテーブルを作成して管理できます。データベースレベルとテーブルレベルの両方のアクセス許可を付与する必要があります。

データベースに対するアクセス許可を付与するには

  1. AWS Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、データレイク管理者としてサインインします。

  2. ナビゲーションペインで、[データアクセス許可][付与] の順に選択します。

  3. [アクセス許可の付与] ページの [プリンシパル] で、[IAM ユーザーとロール] を選択し、AWS Glue Iceberg REST endpoint アクセス用に作成した IAM ロールを選択します。

  4. [LF タグまたはカタログリソース] で、[名前付きのデータカタログリソース] を選択します。

  5. [カタログ] で、テーブルバケット用に作成した AWS Glue データカタログを選択します。例えば、<accoundID>:s3tablescatalog/<table-bucket-name> と指定します。

  6. [Database] (データベース) には mynamespace を選択します。

  7. [テーブルのアクセス許可] で、[テーブルを作成][説明] を選択します。

  8. [Grant] (付与) を選択します。

テーブルに対するアクセス許可を付与するには

  1. AWS Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、データレイク管理者としてサインインします。

  2. ナビゲーションペインで、[データアクセス許可][付与] の順に選択します。

  3. [アクセス許可の付与] ページの [プリンシパル] で、[IAM ユーザーとロール] を選択し、AWS Glue Iceberg REST endpoint アクセス用に作成した IAM ロールを選択します。

  4. [LF タグまたはカタログリソース] で、[名前付きのデータカタログリソース] を選択します。

  5. [カタログ] で、テーブルバケット用に作成した AWS Glue データカタログを選択します。例えば、<accoundID>:s3tablescatalog/<table-bucket-name> と指定します。

  6. [データベース] で、作成した S3 テーブルバケット名前空間を選択します。

  7. [テーブル]で、[ALL_TABLES] を選択します。

  8. [テーブルアクセス許可] で、[Super] を選択します。

  9. [Grant] (付与) を選択します。

エンドポイントを使用するための環境を設定する

テーブルへのアクセスに必要な許可を付与した IAM ロールを設定した後、次のコマンドを使用して、AWS CLI をそのロールで設定することで、ローカルマシンから Iceberg クライアントを実行できます。

aws sts assume-role --role-arn "arn:aws:iam::<accountid>:role/<glue-irc-role>" --role-session-name <glue-irc-role>

AWS Glue REST エンドポイントを通じてテーブルにアクセスするには、Iceberg 互換クライアントでカタログを初期化する必要があります。この初期化では、sigv4 プロパティ、エンドポイント URI、ウェアハウスの場所などのカスタムプロパティを指定する必要があります。これらのプロパティを次のように指定します。

  • Sigv4 プロパティ – Sigv4 を有効にする必要があります。署名は glue です。

  • ウェアハウスの場所 - テーブルバケットです。次の形式で指定します: <accountid>:s3tablescatalog/<table-bucket-name>

  • エンドポイント URI - リージョン固有のエンドポイントについては、「AWS Glue サービスエンドポイントのリファレンスガイド」を参照してください。

次の例では、pyIceberg カタログを初期化する方法を示しています。

rest_catalog = load_catalog( s3tablescatalog, **{ "type": "rest", "warehouse": "<accountid>:s3tablescatalog/<table-bucket-name>", "uri": "https://glue.<region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "glue", "rest.signing-region": region } )

AWS GlueIceberg REST エンドポイントの実装の詳細については、「AWS Glue ユーザーガイド」の「AWS Glue Iceberg REST エンドポイントを使用したデータカタログへの接続」を参照してください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.