S3 Tables のすべてのテーブルは Apache Iceberg 形式で、2 種類の S3 オブジェクトで構成されます。これら 2 種類のオブジェクトは、異なる時点でデータファイルに関する情報を追跡するデータとメタデータファイルを保存するデータファイルです。すべてのテーブルバケット、名前空間、テーブルオペレーション (CreateNamespace
、CreateTable
など) は S3 Tables エンドポイント (s3tables.region.amazonaws.com
) を介してルーティングされ、データとメタデータファイルを読み書きするすべてのオブジェクトレベルのオペレーションは引き続き S3 サービスエンドポイント (s3.region.amazonaws.com
) を介してルーティングされます。
S3 Tables にアクセスするために、Amazon S3は AWS PrivateLink を使用して、ゲートウェイエンドポイントとインターフェイスエンドポイントの 2 つのタイプの VPC エンドポイントをサポートしています。ゲートウェイエンドポイントは、AWS ネットワーク経由で VPC から S3 にアクセスするために、ルートテーブルで指定するゲートウェイです。インターフェイスエンドポイントは、プライベート IP アドレスを使用して、VPC 内、オンプレミス、または VPC ピアリングや AWS Transit Gateway を使用する別の AWS リージョンにある VPC から Amazon S3 にリクエストをルーティングすることにより、ゲートウェイエンドポイントの機能を拡張します。
VPC から S3 Tables にアクセスするには、2 つの VPC エンドポイント (1 つは S3 用、もう 1 つは S3 Tables 用) を作成することをお勧めします。ファイル (オブジェクト) レベルのオペレーションを S3 にルーティングするゲートウェイまたはインターフェイスエンドポイント、およびバケットおよびテーブルレベルのオペレーションを S3 Tables にルーティングするインターフェイスエンドポイントを作成できます。S3 を使用して、ファイルレベルのリクエストに VPC エンドポイントを作成して使用できます。詳細については、「AWS PrivateLink ユーザーガイド」の「Gateway endpoints」を参照してください。
AWS PrivateLink を使用して S3 Tables のエンドポイントを作成および操作する方法の詳細については、以下のトピックを参照してください。VPC インターフェイスエンドポイントを作成するには、AWS PrivateLink ガイドの「VPC エンドポイントの作成」を参照してください。
トピック
S3 Tables の VPC エンドポイントの作成
VPC エンドポイントを作成すると、S3 Tables はエンドポイント固有の 2 つのタイプの DNS 名 (リージョンおよびゾーン) を生成します。
-
リージョン DNS 名は次の形式です。
VPCendpointID.s3tables.AWSregion.vpce.amazonaws.com
。例えば、VPC エンドポイント IDvpce-1a2b3c4d
の場合、生成される DNS 名はvpce-1a2b3c4d-5e6f.s3tables.us-east-1.vpce.amazonaws.com
に似ている場合があります。 -
ゾーン DNS 名は次の形式です。
VPCendpointID-AvailabilityZone.s3tables.AWSregion.vpce.amazonaws.com
。例えば、VPC エンドポイント IDvpce-1a2b3c4d-5e6f.
の場合、生成される DNS 名はvpce-1a2b3c4d-5e6f-us-east-1a.s3tables.us-east-1.vpce.amazonaws.com
に似ている場合があります。ゾーン DNS 名にはアベイラビリティーゾーンが含まれます。ゾーン DNS 名は、アーキテクチャがアベイラビリティーゾーンを分離する場合に使用できます。エンドポイント固有の S3 DNS 名は、S3 パブリック DNS ドメインから解決できます。
また、プライベート DNS オプションを使用すると、VPC エンドポイント経由の S3 トラフィックのルーティングが簡単になり、アプリケーションで使用できる最も低コストのネットワークパスを活用できます。プライベート DNS は、S3 Tables のパブリックエンドポイント、例えば s3tables.region.amazonaws.com
を VPC のプライベート IP にマッピングします。プライベート DNS オプションを使用すると、インターフェイスエンドポイントのエンドポイント固有の DNS 名を使用するように S3 クライアントを更新することなく、Regional S3 トラフィックをルーティングできます。
注記
AWS PrivateLink for Amazon S3 は Amazon S3 デュアルスタックエンドポイントの使用をサポートしていません。詳細については、「Amazon S3 API リファレンス」の「Using Amazon S3 dual-stack endpoints」を参照してください。
AWS CLI を使用したエンドポイントを介するテーブルバケットとテーブルへのアクセス
AWS Command Line Interface (AWS CLI) を使用して、インターフェイスエンドポイントを介してテーブルバケットとテーブルにアクセスできます。AWS CLI を使用すると、aws s3
コマンドは Amazon S3 エンドポイントを介してトラフィックをルーティングします。aws s3tables
AWS CLI コマンドは Amazon S3 Tables エンドポイントを使用します。
s3tables
VPC エンドポイントの例は、vpce-0123456afghjipljw-nmopsqea.s3tables.region.vpce.amazonaws.com
です。
s3tables
VPC エンドポイントにはバケット名は含まれません。aws s3tables
AWS CLI コマンドを使用して s3tables
VPC エンドポイントにアクセスできます。
s3
VPC エンドポイントの例は、amzn-s3-demo-bucket.vpce-0123456afghjipljw-nmopsqea.s3.region.vpce.amazonaws.com
です。
aws s3
AWS CLI コマンドを使用して s3
VPC エンドポイントにアクセスできます。
AWS CLI を使用してインターフェイスエンドポイントを介してテーブルバケットとテーブルにアクセスするには、-region
- および --endpoint-url
パラメータを使用します。テーブルバケットとテーブルレベルのアクションを実行するには、S3 Tables エンドポイント URL を使用します。オブジェクトレベルのアクションを実行するには、Amazon S3 エンドポイント URL を使用します。
次の例では、ユーザー入力用プレースホルダー
を独自の情報に置き換えます。
[例 1: エンドポイント URL を使用したアカウント内のテーブルバケットのリスト化]
aws s3tables list-table-buckets --endpoint https://
vpce-0123456afghjipljb-aac
.s3tables.us-east-1
.vpce.amazonaws.com —regionus-east-1
[例 2: エンドポイント URL を使用したバケット内のテーブルのリスト化]
aws s3tables list-tables --table-bucket-arn arn:aws:s3tables:
us-east-1
:123456789301
:bucket/amzn-s3-demo-bucket
--endpoint https://vpce-0123456afghjipljb-aac
.s3tables.us-east-1
.vpce.amazonaws.com --regionus-east-1
クエリエンジン使用時の VPC ネットワークの設定
クエリエンジンを使用する場合は、次のステップに従って、VPC ネットワークを設定します。
-
開始するには、VPC を作成または更新します。詳細については、「Create a VPC (VPC を作成する)」を参照してください。
-
S3 Tables にルーティングするテーブルおよびテーブルバケットレベルのオペレーションの場合は、新しいインターフェイスエンドポイントを作成します。詳細については、「インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする」を参照してください。
-
Amazon S3 にルーティングするすべてのオブジェクトレベルのオペレーションで、ゲートウェイエンドポイントまたはインターフェイスエンドポイントを作成します。ゲートウェイエンドポイントの詳細については、「Create a gateway endpoint」を参照してください。
-
次に、データリソースを設定し、Amazon EMR クラスターを起動します。詳細については、「Amazon EMR の開始方法」を参照してください。
-
その後、VPC エンドポイントから DNS 名を選択して、追加の設定で Spark アプリケーションを送信できます。例えば、
spark.sql.catalog.ice_catalog.s3tables.endpoint
およびhttps://interface-endpoint.s3tables.
です。詳細については、「Submit work to your Amazon EMR cluster」を参照してください。us-east-1
.vpce.amazonaws.com
VPC ネットワーク内の S3 Tables へのアクセスの制限
リソースベースのポリシーと同様に、テーブルとテーブルバケットへのアクセスを制御するエンドポイントポリシーを VPC エンドポイントにアタッチできます。次の例では、インターフェイスエンドポイントポリシーは特定のテーブルバケットのみへのアクセスを制限します。
{
"Version": "2012-10-17",
"Id": "Policy141511512309",
"Statement": [{
"Sid": "Access-to-specific-bucket-only",
"Principal": "*",
"Action": "s3tables:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket
",
"arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket
/*"
]
}]
}