Icebergテーブル用に外部ボリュームを構成する¶
このトピックでは、Icebergテーブル用に 外部ボリューム を構成するのに役立つ情報を提供します。Icebergテーブルを作成するには、外部ボリュームが必要です。
次のクラウドストレージサービス用に外部ボリュームを作成できます。
Amazon S3用の外部ボリュームを構成する¶
このセクションでは、外部ボリュームを使用してSnowflakeに独自のAmazon S3バケットへの制限付きアクセスを許可する方法について説明します。
組織の管理者が、Amazon Web Services(AWS)アカウントで IAM ユーザーに権限を付与します。
注釈
Snowflakeは、ドットを含むバケット名(例えば、
my.s3.bucket
)を持つ外部ボリュームをサポートできません。S3内のデータにアクセスするために、Snowflakeは仮想ホストスタイルのパスと HTTPS を使用します。しかし、S3は名前にドットを含む仮想ホストスタイルのバケットでは SSL をサポートしません。このセクションの手順を完了するには、 IAM ポリシーとロールを作成および管理するための AWS での権限が必要です。AWS 管理者でない場合は、 AWS 管理者にこれらのタスクを実行するように依頼します。
データ復旧をサポートするには、 外部クラウドストレージの場所のバージョン管理を有効にします。
ステップ1: S3バケットのアクセス許可を構成する¶
AWS アクセス制御の要件¶
フォルダーとサブフォルダー内のファイルにアクセスするには、SnowflakeではS3バケットとフォルダーに対する次の権限が必要です。
s3:DeleteObject
s3:DeleteObjectVersion
s3:GetBucketLocation
s3:GetObject
s3:GetObjectVersion
s3:ListBucket
s3:PutObject
注釈
s3:PutObject
権限は外部ボリュームの場所への書き込みアクセスを許可します。書き込みアクセスを完全に構成するには、外部ボリュームの ALLOW_WRITES
パラメーターを TRUE
(デフォルト値)に設定する必要があります。
ベストプラクティスとして、SnowflakeはSnowflakeにS3バケットへのアクセスを許可する指定の IAM ポリシーの作成をお勧めします。その後、ポリシーをロールに添付し、ロールのために AWS によって生成されたセキュリティ認証情報を使用して、バケット内のファイルにアクセスできます。
IAM ポリシーを作成する¶
AWS 管理コンソールでSnowflakeのアクセス許可を設定するには、次の手順を実行します。
AWS 管理コンソールにログインします。
ホームダッシュボードから、 Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Account settings を選択します。
Security Token Service Regions リストに、アカウントが存在するSnowflake リージョン が表示されています。ステータスが Inactive の場合は Activate を選択します。
左側のナビゲーションペインから Policies を選択します。
Create Policy を選択します。
JSON タブを選択します。
SnowflakeにS3バケットとフォルダーへのアクセスを許可するポリシーを追加します。
AWS ポリシーは、さまざまなセキュリティユースケースをサポートします。次のポリシー(JSON 形式)は、単一のバケットとフォルダーパスを使用して、データの読み取りと書き込みに必要な権限をSnowflakeに提供します。
テキストをコピーしてポリシーエディターに貼り付けます。
注釈
bucket
とprefix
を実際のバケット名とフォルダーパスプレフィックスに置き換えます。政府リージョン のバケットのAmazonリソースネーム(ARN)には、
arn:aws-us-gov:s3:::
プレフィックスがあります。"s3:prefix":
条件を["*"]
または["prefix/*"]
のいずれかに設定すると、指定されたバケットまたはバケットのパス内のすべてのプレフィックスへのアクセスがそれぞれ許可されます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::<bucket>/<prefix>/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<bucket>", "Condition": { "StringLike": { "s3:prefix": [ "<prefix>/*" ] } } } ] }
Review policy を選択します。
ポリシー Name (例えば、
snowflake_access
)とオプションの Description を入力します。Create policy を選択します。
ステップ2: AWS で IAM ロールを作成する¶
AWS 管理コンソールで、 AWS IAM ロールを作成して、データファイルを含むS3バケットに対する権限を付与します。
AWS 管理コンソールにログインします。
ホームダッシュボードから、 Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Roles を選択します。
Create role を選択します。
信頼できるエンティティタイプでは、 Another AWS account を選択します。
Account ID フィールドに、自分の AWS アカウント ID を入力します。後のステップで、信頼関係を変更し、Snowflake にアクセスを許可します。
Require external ID オプションを選択します。外部 ID は、Snowflakeなどのサードパーティに AWS リソース(S3バケットなど)へのアクセスを許可するために使用されます。
0000
などのプレースホルダー ID を入力します。後のステップで、 IAM ロールの信頼関係を変更し、外部ボリュームに外部 ID を指定します。Next を選択します。
ステップ1: S3バケットのアクセス許可を構成する で作成したポリシーを探し、このポリシーを選択します。
Next を選択します。
ロールの名前と説明を入力し、 Create role を選択します。これで、バケットの IAM ポリシー、および IAM ロールを作成し、ロールにポリシーを添付しました。
ロールの概要ページにある Role ARN 値を見つけて記録します。次のステップでこの値を使用して、このロールを参照するSnowflake外部ボリュームを作成します。
ステップ3: SSE-KMS 暗号化に必要な権限を IAM ロールに付与する(オプション)¶
AWS KMS キーで暗号化されたオブジェクトをAmazon S3にアップロードするには、 ステップ2: AWS で IAM ロールを作成する で作成した IAM ロールにキーに対する kms:GenerateDataKey
権限が必要です。AWS KMS キーで暗号化されたオブジェクトをダウンロードするには、 IAM ロールにキーに対する kms:Decrypt
権限が必要です。
サーバー側の暗号化に KMS キーを使う場合、これらのステップに従ってキーを作成し、参照します。
AWS 管理コンソールで、 KMS サービスに移動します。左のナビゲーションから Customer managed keys を選択し、次に Create key を選択します。バケットと同じリージョンにキーを作成する必要があります。
対称キー型を作成します。キーの使い方に、 Encrypt and decrypt を選択します。 Next を選択します。
Alias ボックスでキーの名前を作成し、 Next を選択します。
必要であれば、キーの管理者を指定し、 Next を選択します。
Define key usage permissions ステップで、 IAM ロールの名前を入力します。ロールの横にあるチェックボックスを選択し、 Next を選択します。
Finish を選択してキーを作成します。
顧客管理キーのリストからキーを見つけて選択し、その ARN を記録します。以下はキーの ARN の例です:
arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000
。外部ボリュームを作成する際に、
KMS_KEY_ID
値をキーの ARN に設定します。
ステップ4: Snowflakeで外部ボリュームを作成する¶
CREATE EXTERNAL VOLUME コマンドを使用して外部ボリュームを作成します。
注釈
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)のみが、この SQL コマンドを実行できます。
次の例は、暗号化されたAmazon S3ストレージの場所を定義する外部ボリュームを作成しています。
CREATE OR REPLACE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-s3-us-west-2'
STORAGE_PROVIDER = 'S3'
STORAGE_BASE_URL = 's3://MY_EXAMPLE_BUCKET/'
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
ENCRYPTION=(TYPE='AWS_SSE_KMS' KMS_KEY_ID='arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000')
)
);
注釈
オプションで、 STORAGE_AWS_EXTERNAL_ID パラメーターを使用して、独自の外部 ID を指定します。複数の外部ボリュームやストレージ統合で同じ外部 ID を使用する場合は、このオプションを選択します。
ステップ5: Snowflakeアカウントの AWS IAM ユーザーを取得する¶
Snowflakeアカウント用に自動的に作成された AWS IAM ユーザーの ARN を取得するには、 DESCRIBE EXTERNAL VOLUME コマンドを使用します。以前に作成した外部ボリュームの名前を指定します。
例:
DESC EXTERNAL VOLUME exvol;
次のプロパティの値を記録します。
プロパティ
説明
STORAGE_AWS_IAM_USER_ARN
Snowflakeアカウント用に作成された AWS IAM ユーザー。例えば、
arn:aws:iam::123456789001:user/abc1-b-self1234
。Snowflakeは、Snowflakeアカウント全体用に単一の IAM ユーザーをプロビジョニングします。アカウント内のすべてのS3外部ボリュームは、その IAM ユーザーを使用します。STORAGE_AWS_EXTERNAL_ID
Snowflakeが AWS との信頼関係を確立するために使用する外部 ID。外部ボリュームの作成時に外部 ID (
STORAGE_AWS_EXTERNAL_ID
)を指定しなかった場合、Snowflakeがお客様用の ID を生成します。これらの値は次のステップで提供します。
ステップ6: バケットオブジェクトにアクセスするために IAM ユーザー権限を付与する¶
このステップでは、Snowflakeアカウントの IAM ユーザーがS3バケットのオブジェクトにアクセスできるように権限を設定します。
AWS 管理コンソールにログインします。
Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Roles を選択します。
ステップ2: AWS で IAM ロールを作成する で作成したロールを選択します。
Trust relationships タブを選択します。
Edit trust relationship を選択します。
ポリシードキュメントを ステップ5: Snowflakeアカウントの AWS IAM ユーザーを取得する に記録した出力値で変更します。
IAM ロールのポリシードキュメント
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<snowflake_user_arn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<snowflake_external_id>" } } } ] }
条件:
snowflake_user_arn
は、記録した STORAGE_AWS_IAM_USER_ARN 値です。snowflake_external_id
は、記録した STORAGE_AWS_EXTERNAL_ID 値です。
注釈
新しい外部ボリュームを作成する場合(または CREATE OR REPLACE EXTERNAL VOLUME 構文を使用して既存の外部ボリュームを再作成する場合)に、独自の外部 ID を提供しない場合は、このポリシードキュメントを更新する必要があります。セキュリティ上の理由から、新規または再作成された外部ボリュームは異なる外部 ID を持ち、この信頼ポリシーを更新しない限り、信頼関係を解決できません。
Update Trust Policy を選択します。変更が保存されます。
注釈
権限が正しく設定されていることを確認するために、この外部ボリュームを使用して Icebergテーブルを作成 します。この外部ボリュームを参照する最初のIcebergテーブルを作成するまで、Snowflakeは権限が正しく設定されているかどうかを確認しません。
次のステップ¶
外部ボリュームを構成したら、Icebergテーブルを作成できます。
カタログ統合を使用する読み取り専用のIcebergテーブルを作成するには、 Icebergテーブルのカタログ統合を構成する をご参照ください。
Snowflakeプラットフォームを完全にサポートしたIcebergテーブルを作成するには、 SnowflakeをカタログとしてIcebergテーブルを作成する をご参照ください。
Google Cloud Storageの外部ボリュームを構成する¶
このセクションでは、外部ボリュームを使用してSnowflakeにGoogle Cloud Storage(GCS)バケットへの制限付きアクセスを許可する方法について説明します。
組織の管理者がGoogle Cloudアカウントで IAM ユーザーに権限を付与します。
注釈
このセクションの手順を完了するには、 IAM ポリシーとロールを作成および管理するためのGoogle Cloudでの権限が必要です。Google Cloudの管理者でない場合は、Google Cloud管理者にこれらのタスクの実行を依頼します。
データ復旧をサポートするには、 外部クラウドストレージの場所のバージョン管理を有効にします。
ステップ1: Snowflakeで外部ボリュームを作成する¶
CREATE EXTERNAL VOLUME コマンドを使用して外部ボリュームを作成します。
注釈
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)のみが、この SQL コマンドを実行できます。
次の例は、暗号化された GCS ストレージの場所を定義する外部ボリュームを作成しています。
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-us-east-1'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
)
);
ステップ2: Snowflakeアカウント用のCloud Storageサービスアカウントを取得する¶
Snowflakeアカウント用に自動的に作成されたCloud Storageサービスアカウントの ID を取得するには、 DESCRIBE EXTERNAL VOLUME コマンドを使用します。以前に作成した外部ボリュームの名前を指定します。
例:
DESC EXTERNAL VOLUME exvol;
出力に STORAGE_GCP_SERVICE_ACCOUNT
プロパティの値を記録します(例えば、 service-account-id@project1-123456.iam.gserviceaccount.com
)。
Snowflakeは、Snowflakeアカウント全体に単一のCloud Storageサービスアカウントをプロビジョニングします。すべてのGoogle Cloud Storage外部ボリュームは、そのサービスアカウントを使用します。
ステップ3: バケットオブジェクトにアクセスするためのサービスアカウント権限を付与する¶
このステップでは、Google Cloud Platform ConsoleでSnowflakeの IAM アクセス許可を構成します。
カスタム IAM ロールを作成する¶
バケットにアクセスしてオブジェクトを取得するために必要な権限を持つカスタムロールを作成します。
プロジェクトエディターとしてGoogle Cloud Platform Consoleにログインします。
ホームダッシュボードから、 IAM & admin » Roles を選択します。
Create Role を選択します。
カスタムロールの名前と説明を入力します。
Add Permissions を選択します。
権限のリストをフィルターし、リストから次を追加します。
storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
Create を選択します。
Cloud Storageサービスアカウントにカスタムロールを割り当てる¶
プロジェクトエディターとしてGoogle Cloud Platform Consoleにログインします。
ホームダッシュボードから、 Storage » Browser を選択します。
アクセス用に構成するバケットを選択します。
右上隅の SHOW INFO PANEL を選択します。バケットの情報パネルが表示されます。
Add members フィールドで、 ステップ2: Snowflakeアカウント用のCloud Storageサービスアカウントを取得する の出力からサービスアカウント名を検索します。
Select a role ドロップダウンから、 Storage » Custom »
<ロール>
を選択します。<ロール>
は カスタム IAM ロールを作成する で作成したカスタムCloud Storageロールです。Add を選択します。サービスアカウント名は、情報パネルの Storage Object Viewer ロールドロップダウンに追加されます。
注釈
権限が正しく設定されていることを確認するために、この外部ボリュームを使用して Icebergテーブルを作成 します。この外部ボリュームを参照する最初のIcebergテーブルを作成するまで、Snowflakeは権限が正しく設定されているかどうかを確認しません。
Cloud StorageサービスアカウントにCloud Key Management Serviceの暗号化キーに対するアクセス権限を付与する¶
注釈
この手順は、Google Cloud Key Management Service(Cloud KMS)に保存されているキーを使用して GCS バケットが暗号化されている 場合にのみ 必要です。
プロジェクトエディターとしてGoogle Cloud Platform Consoleにログインします。
ホームダッシュボードから、 Security » Cryptographic keys を選択します。
GCS バケットに割り当てられているキーリングを選択します。
右上隅の SHOW INFO PANEL を選択します。キーリングの情報パネルが表示されます。
Add members フィールドで、 ステップ2: Snowflakeアカウント用のCloud Storageサービスアカウントを取得する の DESCRIBE EXTERNAL VOLUME 出力からサービスアカウント名を検索します。
Select a role ドロップダウンから、 Cloud KMS CryptoKey Encrypter/Decrypter ロールを選択します。
Add を選択します。サービスアカウント名は、情報パネルの Cloud KMS CryptoKey Encrypter/Decrypter ロールドロップダウンに追加されます。
次のステップ¶
外部ボリュームを構成したら、Icebergテーブルを作成できます。
カタログ統合を使用する読み取り専用のIcebergテーブルを作成するには、 Icebergテーブルのカタログ統合を構成する をご参照ください。
Snowflakeプラットフォームを完全にサポートしたIcebergテーブルを作成するには、 SnowflakeをカタログとしてIcebergテーブルを作成する をご参照ください。
Azureストレージの外部ボリュームを構成する¶
このセクションでは、外部ボリュームを使用してSnowflakeに独自のMicrosoft Azure(Azure)コンテナへ制限付きアクセスを許可する方法について説明します。Snowflakeは、外部ボリュームで次のAzureクラウドストレージサービスをサポートしています。
BLOBストレージ
Data Lake Storage Gen2
汎用v1
汎用v2
組織の管理者がAzureアカウントで IAM ユーザーに権限を付与します。
注釈
このセクションの手順を完了するには、 IAM ポリシーとロールを作成および管理するためのAzureでの権限が必要です。Azure管理者でない場合は、Azure管理者にこれらのタスクを実行するよう依頼します。
データ復旧をサポートするには、 外部クラウドストレージの場所のバージョン管理を有効にします。
ステップ1: Snowflakeで外部ボリュームを作成する¶
CREATE EXTERNAL VOLUME コマンドを使用して外部ボリュームを作成します。
注釈
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)のみが、この SQL コマンドを実行できます。
次の例は、暗号化されたAzureストレージの場所を定義する外部ボリュームを作成しています。
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-azure-northeurope'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
)
);
注釈
STORAGE_BASE_URL の値を指定するときは、 https://
ではなく azure://
のプレフィックスを使用してください。
ステップ2: Snowflakeにストレージの場所へのアクセスを許可する¶
Microsoftの許可リクエストページへの URL を取得するには、 DESCRIBE EXTERNAL VOLUME コマンドを使用します。以前に作成した外部ボリュームの名前を指定します。
DESC EXTERNAL VOLUME exvol;
次のプロパティの値を記録します。
プロパティ
説明
AZURE_CONSENT_URL
Microsoftのアクセス許可リクエストページへの URL。
AZURE_MULTI_TENANT_APP_NAME
アカウント用に作成されたSnowflakeクライアントアプリケーションの名前。このセクションの後半のステップでは、このアプリケーションに許可されたストレージの場所でアクセストークンを取得するための権限を付与します。
これらの値は次のステップで使用します。
ウェブブラウザーで、Microsoftの許可リクエストページ(
AZURE_CONSENT_URL
)に移動します。Accept を選択します。このアクションにより、Snowflakeアカウント用に作成されたAzureサービスプリンシパルは、テナント内のリソースでアクセストークンを取得できます。アクセストークンの取得は、コンテナーに対する適切なアクセス許可をサービスプリンシパルに付与した場合にのみ成功します(次のステップを参照)。
Microsoftの権限リクエストページは、Snowflakeの企業サイト(snowflake.com)にリダイレクトされます。
Microsoft Azureポータルにログインします。
Azure Services » Storage Accounts に移動します。Snowflakeサービスプリンシパルにアクセスを許可するストレージアカウント名を選択します。
注釈
外部ボリュームの IAM 権限はコンテナレベルではなく、ストレージアカウントレベルで設定する必要があります。
Access Control (IAM) » Add role assignment を選択します。
Storage Blob Data Contributor
ロールを選択して、Snowflakeサービスプリンシパルに読み取りと書き込みのアクセスを許可します。注釈
Storage Blob Data Contributor
ロールは外部ボリュームの場所への書き込みアクセスを許可します。書き込みアクセスを完全に構成するには、外部ボリュームのALLOW_WRITES
パラメーターをTRUE
(デフォルト値)に設定する必要があります。Snowflakeサービスプリンシパルを検索します。これは DESC EXTERNAL VOLUME 出力(ステップ1)の AZURE_MULTI_TENANT_APP_NAME プロパティにあるIDです。AZURE_MULTI_TENANT_APP_NAME プロパティで、アンダースコアの 前にある 文字列を検索します。
重要
このセクションのMicrosoftリクエストページでリクエストされたSnowflakeサービスプリンシパルをAzureが作成するのに、1時間以上かかる場合があります。サービスプリンシパルがすぐに利用できない場合は、1~2時間待ってから、もう一度検索してください。
サービスプリンシパルを削除すると、外部ボリュームは機能しなくなります。
Review + assign を選択します。
注釈
ロールを割り当てると、変更が有効になるまで最大10分かかることがあります。詳細については、Microsoft Azureドキュメントの 症状 - ロールの割り当て変更が検出されない をご参照ください。
注釈
権限が正しく設定されていることを確認するために、この外部ボリュームを使用して Icebergテーブルを作成 します。この外部ボリュームを参照する最初のIcebergテーブルを作成するまで、Snowflakeは権限が正しく設定されているかどうかを確認しません。
次のステップ¶
外部ボリュームを構成したら、Icebergテーブルを作成できます。
カタログ統合を使用する読み取り専用のIcebergテーブルを作成するには、 Icebergテーブルのカタログ統合を構成する をご参照ください。
Snowflakeプラットフォームを完全にサポートしたIcebergテーブルを作成するには、 SnowflakeをカタログとしてIcebergテーブルを作成する をご参照ください。
外部クラウドストレージのバージョン管理を有効にする¶
Icebergテーブルのデータは、お客様が管理する外部クラウドストレージに保管されます。データが複数のツールやサービスによって操作されるセントラルデータリポジトリ(またはデータレイク)にある場合、偶発的な削除や破損が発生する可能性があります。
オブジェクトの復旧をサポートするために、外部クラウドストレージのバージョン管理を有効にすることができます。
Amazon S3でバージョン管理を有効にするには、 バケットでのバージョン管理の有効化 をご参照ください。
Google Cloud Storageのバージョン管理を有効にするには、 オブジェクトのバージョン管理を使用する をご参照ください。
Azureのバージョン管理を有効にするには、 blob のバージョン管理を有効にする をご参照ください。
アクティブなストレージの場所¶
プレビュー期間中、各外部ボリュームは1つのアクティブなストレージの場所をサポートします。アクティブな場所は、外部ボリュームの有効期間中、同じままです。
外部ボリュームを作成する 際に複数のストレージの場所を指定する場合、Snowflakeは1つの場所を外部ボリュームのアクティブな場所として割り当てます。
割り当てが発生するのは、外部ボリュームを使用する最初のテーブルが作成されたときです。Snowflakeは、以下のロジックを使用してアクティブな場所を選択します。
STORAGE_LOCATIONS
リストに1つ以上の ローカル ストレージの場所が含まれている場合、Snowflakeはリストで最初に表示されるローカルストレージの場所を使用します。ローカルストレージは、Snowflakeアカウントと同じクラウドプロバイダー、および同じリージョンにあります。STORAGE_LOCATIONS
リストにローカルストレージの場所が含まれていない場合、Snowflakeはリストに最初に表示されている場所を選択します。
注釈
クロスクラウド/クロスリージョンのIcebergテーブルは、カタログ統合を使用する場合にのみサポートされます。詳細については、 クロスクラウド/クロスリージョンのサポート をご参照ください。
Snowflakeバージョン7.44より前に作成された外部ボリュームは、アクティブな場所を選択するために異なるロジックを使用していた可能性があります。
アカウント、データベース、またはスキーマレベルで外部ボリュームを設定する¶
Icebergテーブルに使用する既存の外部ボリュームを定義するには、 EXTERNAL_VOLUME パラメーターを次のレベルで設定します。
- アカウント:
アカウント管理者は ALTER ACCOUNT コマンドを使用して、アカウントのパラメーターを設定できます。この値がアカウントに設定されている場合、そのアカウントで作成されたすべてのIcebergテーブルはデフォルトでこの外部ボリュームを読み取り、書き込みます。
- オブジェクト:
ユーザーは適切な CREATE <オブジェクト> または ALTER <オブジェクト> コマンドを実行して、データベースまたはスキーマレベルで EXTERNAL_VOLUME パラメーター値を上書きできます。宣言の有効範囲が最も低いもの(スキーマ > データベース > アカウント)が使用されます。
適切な ALTER <object_type> コマンドを使用してオブジェクトを変更するために必要な最小権限に加えて、ロールには外部ボリュームに対して USAGE 権限が必要です。
例¶
次のステートメントは、 my_database_1
という名前のデータベース用に外部ボリューム(my_s3_vol
)を設定します。
ALTER DATABASE my_database_1
SET EXTERNAL_VOLUME = 'my_s3_vol';
データベースレベルで外部ボリュームを設定した後、外部ボリュームを指定せずにそのデータベースにIcebergテーブルを作成できます。次のステートメントは、カタログとしてSnowflakeを使用し、データベースに設定されたデフォルトの外部ボリューム(my_s3_vol
)を使用するIcebergテーブルを my_database_1
に作成します。
CREATE ICEBERG TABLE iceberg_reviews_table (
id STRING,
product_name STRING,
product_id STRING,
reviewer_name STRING,
review_date DATE,
review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';