Apache Iceberg™ テーブルには、カタログ提供認証情報を使用します。¶
供給された認証情報はIceberg テーブルをサポートし、 外部ボリューム を使用せずに、クラウドストレージ内のテーブルデータとメタデータに Snowflake がアクセスできるようになります。
代わりに、サードパーティの Iceberg REST カタログ(Snowflake Open Catalog など)を構成してアクセス制御を委譲し、その後、Snowflake で供給された認証情報用に構成されたカタログ統合を作成します。カタログ統合に関連付けられたIcebergテーブルでは、Snowflakeはカタログプロバイダーが提供する認証情報を使用して、外部クラウドストレージにセキュアに接続します。
注釈
REST カタログ統合 を使用し、そのファイルを Amazon S3 に保存している、 外部管理 Iceberg テーブル では、カタログ提供認証情報の使用がサポートされています。この機能を使用するには、外部カタログも認証情報の供給をサポートしている必要があります。
考慮事項¶
Icebergテーブルでカタログ提供認証情報を使用する場合は、以下を考慮してください。
この機能は、Amazon S3にデータとメタデータを保存するテーブルでのみサポートされています。
テーブルファイルは単一のバケットに格納する必要があります。複数のバケットに分散することはできません。
REST カタログで構成されたサービスプリンシパルには、バケット内のテーブルファイルを含む*すべての*場所からの読み取り権限が必要です。AWS Lake Formation を AWS Glue と併用する場合は、このアクセスを有効にするために追加の手順が必要になる場合があります。詳細については、(オプション)Lake ormationのアクセス制御を構成する をご参照ください。
Snowflakeは、カタログが供給された認証情報の有効期限を提供することを期待し、キーが
expiration-time
で、値がミリ秒単位で有効期限を指定するタイムスタンプ(たとえば、1730234407000
)であるキーと値のペアを探します。カタログに有効期限が記載されていない場合、Snowflakeは認証情報の有効期限を受信後60分とみなします。
カタログが無効な認証情報を提供した場合、テーブルの作成に失敗します。
データ共有はサポートされていません。
自動供給された認証情報のカタログ統合の作成¶
ベンディングされた認証情報のカタログ統合を作成するには、CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) コマンドを使用し、ACCESS_DELEGATION_MODE
プロパティを VENDED_CREDENTIALS
に設定します。
条件:
ACCESS_DELEGATION_MODE = {VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS}
外部クラウドストレージにあるIcebergテーブルファイルへのアクセスに使用するアクセス委譲モードを指定します。
VENDED_CREDENTIALS
は、Snowflake が自動供給された認証情報を使用するように指定します。EXTERNAL_VOLUME_CREDENTIALS
はSnowflakeが外部ボリュームを使用するように指定します。
デフォルト:
EXTERNAL_VOLUME_CREDENTIALS
任意の CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) ステートメントの REST_CONFIG
プロパティのリストで、ACCESS_DELEGATION_MODE
プロパティを指定できます。次のトピックでは、最も一般的なユースケースの例を示します。
Snowflake Open Catalog。これらの指示は、Apache Polaris™にも適用されます。
重要
アクセス制御に AWS Lake Formationを使用する場合は、Snowflake が AWS Glue カタログまたは Amazon S3テーブルにアクセスできるようにする必要があります。詳細については、 (オプション)Lake ormationのアクセス制御を構成する をご参照ください。
例: AWS Glue¶
次の例では、ベンディングされた認証情報を使用する AWS Glue のカタログ統合を作成します。詳細については、 AWS Glue Iceberg REST のカタログ統合の構成 をご参照ください。
CREATE CATALOG INTEGRATION glue_rest_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'rest_catalog_integration'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
SIGV4_SIGNING_REGION = 'us-west-2'
)
ENABLED = TRUE;
例:Amazon S3 テーブル¶
この例では、 Amazon S3 テーブル のカタログ統合を作成し、Lake Formation を使用して SigV4 認証情報のベンディングを有効にします。
CREATE OR REPLACE CATALOG INTEGRATION my_s3_tables_catalog_integration
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012:S3tablescatalog/my_table_bucket'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
)
ENABLED = TRUE;
条件:
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
AWS Glue Iceberg REST エンドポイント を指定します。
CATALOG_NAME = 'aws_account_id:s3tablescatalog/s3_table_bucket
AWS アカウントの S3 テーブルバケットを指定します。
供給された認証情報を使用するIcebergテーブルの作成¶
サードパーティの Iceberg REST カタログでアクセス制御をセットアップし、供給された認証情報のカタログ統合を作成したら、Iceberg テーブルを作成できます。
ベンディングされた認証情報を使用するIcebergテーブルを作成する場合は、ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
で構成されたカタログ統合を指定し、CREATE ICEBERG TABLE (Iceberg REST カタログ) ステートメントから EXTERNAL_VOLUME
パラメーターを除外します。
例:
CREATE ICEBERG TABLE my_iceberg_table
CATALOG = open_catalog_int_vended_credentials
CATALOG_TABLE_NAME = 'my_table'
AUTO_REFRESH = TRUE;
注釈
アカウント、データベース、スキーマの各レベルでデフォルト外部ボリュームをセットした場合、Snowflakeは、供給された認証情報を使用するように構成されたカタログ統合を指定する限り、テーブル作成時にデフォルト外部ボリュームを無視します。