CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)¶
オープンソースの Apache Iceberg™ REST OpenAPI 仕様 に準拠したリモートカタログで管理される Apache Iceberg™ テーブル 用の新しい カタログ統合 をアカウントに作成するか、既存のカタログ統合を置き換えます。
注釈
Snowflake Open Catalog の統合を作成するには、 CREATE CATALOG INTEGRATION (Snowflake Open Catalog) をご参照ください。
- こちらもご参照ください。
ALTER CATALOG INTEGRATION、 DROP CATALOG INTEGRATION、 SHOW CATALOG INTEGRATIONS、 DESCRIBE CATALOG INTEGRATION
構文¶
CREATE [ OR REPLACE ] CATALOG INTEGRATION [ IF NOT EXISTS ] <name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<namespace>'
REST_CONFIG = (
restConfigParams
)
REST_AUTHENTICATION = (
restAuthenticationParams
)
ENABLED = { TRUE | FALSE }
[ REFRESH_INTERVAL_SECONDS = <value> ]
[ COMMENT = '<string_literal>' ]
条件:
restConfigParams ::=
CATALOG_URI = '<rest_api_endpoint_url>'
PREFIX = '<prefix>'
WAREHOUSE = '<warehouse_name>'
CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }
restAuthenticationParams
は、認証方法によって以下のようになります。
OAuth
restAuthenticationParams (for OAuth) ::=
TYPE = OAUTH
OAUTH_TOKEN_URI = 'https://<token_server_uri>'
OAUTH_CLIENT_ID = '<oauth_client_id>'
OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
OAUTH_ALLOWED_SCOPES = ('<scope_1>', '<scope_2>')
ベアラー トークン
restAuthenticationParams (for Bearer token) ::=
TYPE = BEARER
BEARER_TOKEN = '<bearer_token>'
SigV4
restAuthenticationParams (for SigV4) ::=
TYPE = SIGV4
SIGV4_IAM_ROLE = '<iam_role_arn>'
SIGV4_SIGNING_REGION = '<region>'
パラメーター¶
name
カタログ統合の識別子(名前)を指定する文字列。アカウント内で一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
CATALOG_SOURCE = ICEBERG_REST
カタログソースが Apache Iceberg REST 仕様に準拠した REST カタログであることを指定します。
TABLE_FORMAT = ICEBERG
カタログが提供する表形式として ICEBERG を指定します。
CATALOG_NAMESPACE = 'namespace'
外部カタログの名前空間を指定します。Snowflakeは、このカタログ統合に関連付けたすべてのIcebergテーブルに対してこの名前空間を使います。
テーブルの作成時にテーブルレベルで名前空間を指定することで、この値をオーバーライドできます。
ENABLED = { TRUE | FALSE }
カタログ統合をIcebergテーブルで使用できるかどうかを指定します。
TRUE
は、ユーザーがこの統合を参照する新しいIcebergテーブルを作成できるようにします。FALSE
は、ユーザーがこの統合を参照する新しいIcebergテーブルを作成できないようにします。
REFRESH_INTERVAL_SECONDS = value
自動リフレッシュ のメタデータ更新のために外部 Iceberg カタログをポーリングしようとする間に Snowflake が待機する秒数を指定します。
値:30から86400まで。
デフォルト: 30秒
COMMENT = 'string_literal'
統合のコメントを指定する文字列(リテラル)。
デフォルト: 値なし
REST 構成パラメーター (restConfigParams)¶
CATALOG_URI = 'rest_api_endpoint_url'
REST API 用のカタログのエンドポイント URL。
PREFIX
オプションで、すべての API ルートに付加するプレフィックスを指定します。
WAREHOUSE
オプションで、リモート・カタログ・サービスに要求するウェアハウスの場所または識別子を指定します。
CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }
オプションで、カタログ API の接続タイプを指定します。
デフォルト:
PUBLIC
REST 認証パラメーター (restAuthenticationParams)¶
OAuth¶
TYPE = OAUTH
Iceberg REST カタログへの接続に使用する Snowflake の認証タイプとして OAuth を指定します。
OAUTH_TOKEN_URI = token_server_uri
サードパーティIDプロバイダーの任意 URL。指定しない場合、Snowflake はリモートカタログプロバイダーが OAuth ID プロバイダーであると仮定します。
OAUTH_CLIENT_ID = oauth_client_id
あなたの OAuth2 クライアント ID。
OAUTH_CLIENT_SECRET = oauth_client_secret
あなたの OAuth2 クライアントシークレット。
OAUTH_ALLOWED_SCOPES = ( 'scope_1', 'scope_2' )
OAuth トークンのスコープ。Iceberg REST API 仕様にはスコープが1つしか含まれていませんが、カタログは実装において複数のスコープをサポートすることができます。
ベアラートークン¶
TYPE = BEARER
Snowflake が Iceberg REST カタログに接続する際に使用する認証タイプとして、ベアラートークンを指定します。
BEARER_TOKEN = bearer_token
ID プロバイダーのベアラートークン。個人アクセストークン(PAT)を指定することもできます。
SigV4¶
TYPE = SIGV4
Iceberg REST カタログに接続するために Snowflake が使用する認証タイプとして、Signature Version 4 を指定します。
SIGV4_IAM_ROLE = 'iam_role_arn'
API Gatewayで REST API にアクセスする権限を持つ IAM ロールのAmazon Resource Name (ARN) を指定します。
SIGV4_SIGNING_REGION = 'region'
オプションで、 API Gatewayの API に関連する AWS Region を指定します。このパラメーターを指定しない場合、SnowflakeはSnowflakeアカウントがデプロイされているリージョンを使用します。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
CREATE INTEGRATION |
アカウント |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
カタログ統合は、外部 Iceberg カタログへの読み取り専用アクセスを提供します。
既存のカタログ統合は変更できません。代わりに CREATE OR REPLACE CATALOG INTEGRATION ステートメントを使用してください。
1つ以上の Apache Iceberg™ テーブルがカタログ統合に関連付けられている場合、カタログ統合をドロップしたり置き換えたりすることはできません。
カタログ統合に依存するテーブルを表示するには、 SHOW ICEBERG TABLES コマンドと、
catalog_name
列でフィルターする RESULT_SCAN を使用したクエリを使用できます。注釈
列識別子(
catalog_name
)は大文字と小文字を区別します。SHOW ICEBERG TABLES 出力に表示されるのと同じように、列識別子を指定します。例:
SHOW ICEBERG TABLES; SELECT * FROM TABLE( RESULT_SCAN( LAST_QUERY_ID() ) ) WHERE "catalog_name" = 'my_catalog_integration_1';
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
以下の例では、 OAuth を使用して Tabular に接続する REST カタログ統合を作成しています。
CREATE OR REPLACE CATALOG INTEGRATION tabular_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'default'
REST_CONFIG = (
CATALOG_URI = 'https://api.tabular.io/ws'
WAREHOUSE = '<tabular_warehouse_name>'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = 'https://api.tabular.io/ws/v1/oauth/tokens'
OAUTH_CLIENT_ID = '<oauth_client_id>'
OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
OAUTH_ALLOWED_SCOPES = ('catalog')
)
ENABLED = TRUE;