Iceberg REST クライアントを Amazon S3 Tables Iceberg REST エンドポイントに接続し、REST API コールを行って、S3 テーブルバケット内のテーブルの作成、更新、またはテーブルに対するクエリの実行ができます。エンドポイントは、Apache Iceberg REST Catalog Open API 仕様
注記
Amazon S3 Tables Iceberg REST エンドポイントは、AWS Partner Network (APN) カタログ実装またはカスタムカタログ実装のテーブルにアクセスするために使用できます。1 つのテーブルバケットへの基本的な読み取り/書き込みアクセスのみが必要な場合にも使用できます。その他のアクセスシナリオでは、AWS Glue Iceberg REST エンドポイントを使用してテーブルに接続することをお勧めします。これにより、統合されたテーブル管理、一元化されたガバナンス、きめ細かなアクセスコントロールが可能になります。詳細については、「AWS Glue Iceberg REST エンドポイントを使用した Amazon S3 テーブルへのアクセス」を参照してください。
エンドポイントの設定
サービスエンドポイントを使用して Amazon S3 Tables Iceberg REST エンドポイントに接続します。S3 Tables Iceberg REST エンドポイントの形式を次に示します。
https://s3tables.<REGION>.amazonaws.com/iceberg
リージョン固有のエンドポイントについては、「S3 Tables AWS リージョンとエンドポイント」を参照してください。
カタログ設定プロパティ
Iceberg クライアントを使用して分析エンジンをサービスエンドポイントに接続する場合は、カタログを初期化するときに次の設定プロパティを指定する必要があります。プレースホルダーの値
を実際のリージョンとテーブルバケットの情報に置き換えます。
エンドポイント URI としてのリージョン固有のエンドポイント:
https://s3tables.<REGION>.amazonaws.com/iceberg
ウェアハウスの場所としてのテーブルバケット ARN:
arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>
認証用の Sigv4 プロパティ。サービスエンドポイントリクエスト用の SigV4 署名:
s3tables
次の例では、Amazon S3 Tables Iceberg REST エンドポイントを使用するようにさまざまなクライアントを設定する方法を示しています。
Amazon S3 Tables Iceberg REST エンドポイントを PyIceberg で使用するには、次のアプリケーション設定プロパティを指定します。
rest_catalog = load_catalog( catalog_name, **{ "type": "rest", "warehouse":"arn:aws:s3tables:
<Region>:<accountID>
:bucket/<bucketname>
", "uri": "https://s3tables.<Region>
.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "s3tables", "rest.signing-region": "<Region>
" } )
エンドポイントへのアクセスの認証と承認
S3 Tables サービスエンドポイントへの API リクエストは、AWS Signature Version 4 (SigV4) を使用して認証されます。AWS SigV4 の詳細については、「API リクエストに対する AWS Signature Version 4」を参照してください。
Amazon S3 Tables Iceberg REST エンドポイントリクエストの SigV4 署名: s3tables
Amazon S3 Tables Iceberg REST エンドポイントへのリクエストは、REST API オペレーションに対応する s3tables
IAM アクションを使用して承認されます。これらのアクセス許可は、IAM アイデンティティベースのポリシー、またはテーブルとテーブルバケットにアタッチされたリソースベースのポリシーのいずれかで定義できます。詳細については、「S3 Tables のアクセス管理」を参照してください。
AWS CloudTrail を使用して、REST エンドポイントを通じてテーブルに行われたリクエストを追跡できます。リクエストは、対応する S3 IAM アクションとしてログに記録されます。例えば、LoadTable
API により GetTableMetadataLocation
オペレーションに対して管理イベントが発生し、GetTableData
オペレーションに対してデータイベントが発生します。詳細については、「S3 Tablesの AWS CloudTrail を使用したログ記録」を参照してください。
プレフィックスとパスのパラメータ
Iceberg REST Catalog API のリクエスト URL には、自由形式のプレフィックスが含まれます。例えば、ListNamespaces
API コールでは GET/v1/{prefix}/namespaces
URL 形式が使用されます。S3 Tables では、REST パス {prefix}
は常に URL エンコードされたテーブルバケット ARN です。
例えば、テーブルバケット ARN が arn:aws:s3tables:
の場合、プレフィックスは us-east-1
:111122223333:bucket/bucketname
arn%3Aaws%3As3tables%3A
となります。us-east-1
%3A111122223333
%3Abucket%2Fbucketname
名前空間パスパラメータ
Iceberg REST カタログ API パスの名前空間には、複数のレベルを含めることができます。ただし、S3 Tables は単一レベルの名前空間のみをサポートしています。複数レベルカタログ階層の名前空間にアクセスするには、名前空間を参照するときに、名前空間の上位にある複数レベルカタログに接続できます。これにより、catalog.namespace.table
の 3 つの部分で構成される表記をサポートするクエリエンジンが S3 Tables のカタログ階層内のオブジェクトにアクセスできます。複数レベルの名前空間を使用する場合とは異なり、互換性の問題はありません。
サポートされている Iceberg REST API オペレーション
次の表では、サポートされている Iceberg REST API とそれらが S3 テーブルアクションにどのように対応するかを示しています。
Iceberg REST オペレーション | REST パス | S3 Tables IAM アクション | CloudTrail EventName |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
考慮事項と制限事項
Amazon S3 Tables Iceberg REST エンドポイントを使用する際の考慮事項と制限事項を次に示します。
考慮事項
CreateTable API の動作 – このオペレーションでは
stage-create
オプションはサポートされておらず、400 Bad Request
エラーが発生します。これは、CREATE TABLE AS SELECT
(CTAS) を使用してクエリ結果からテーブルを作成できないことを意味します。DeleteTable API の動作 – パージが有効になっているテーブルのみを削除できます。
purge=false
を使用したテーブルの削除はサポートされておらず、400 Bad Request
エラーが発生します。Spark の一部のバージョンでは、DROP TABLE PURGE
コマンドの実行時でも常にこのフラグが false に設定されます。DROP TABLE PURGE
を試すか、S3 Tables の DeleteTable オペレーションを使用してテーブルを削除できます。-
エンドポイントは標準のテーブルメタデータオペレーションのみをサポートしています。スナップショット管理や圧縮などのテーブルメンテナンスには、S3 Tables のメンテナンス API オペレーションを使用します。詳細については、「S3 Tables のメンテナンス」を参照してください。
制約事項
複数レベルの名前空間はサポートされていません。
OAuth ベースの認証はサポートされていません。
名前空間では
owner
プロパティのみがサポートされています。Apache Iceberg REST Open API 仕様
で定義されているビュー関連の API はサポートされていません。 5 MB を超える
metadata.json
ファイルを使用してテーブルに対してオペレーションを実行することはサポートされておらず、400 Bad Request
エラーが返されます。metadata.json
ファイルのサイズを制御するには、テーブルメンテナンスオペレーションを使用します。詳細については、「S3 Tables のメンテナンス」を参照してください。