ALTER EXTERNAL VOLUME¶
既存の 外部ボリューム のプロパティを変更します。
- こちらもご参照ください。
CREATE EXTERNAL VOLUME、 DROP EXTERNAL VOLUME、 SHOW EXTERNAL VOLUMES、 DESCRIBE EXTERNAL VOLUME
このトピックの内容:
構文¶
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> ADD STORAGE_LOCATION =
(
NAME = '<name>'
cloudProviderParams
)
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> REMOVE STORAGE_LOCATION '<name>'
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET ALLOW_WRITES = TRUE
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
条件:
cloudProviderParams (for Amazon S3) ::= STORAGE_PROVIDER = 'S3' STORAGE_AWS_ROLE_ARN = '<iam_role>' STORAGE_BASE_URL = 's3://<bucket>[/<path>/]' [ ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] | [ TYPE = 'NONE' ] ) ]cloudProviderParams (for Google Cloud Storage) ::= STORAGE_PROVIDER = 'GCS' STORAGE_BASE_URL = 'gcs://<bucket>[/<path>/]' [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] | [ TYPE = 'NONE' ] ) ]cloudProviderParams (for Microsoft Azure) ::= STORAGE_PROVIDER = 'AZURE' AZURE_TENANT_ID = '<tenant_id>' STORAGE_BASE_URL = 'azure://<account>.blob.core.windows.net/<container>[/<path>/]'
パラメーター¶
name
変更する外部ボリュームの識別子を指定します。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
ADD STORAGE_LOCATION
指定されたストレージの場所を外部ボリュームの定義に追加します。複数のストレージの場所を追加するには、各ストレージの場所に対して ALTER EXTERNAL VOLUME ステートメントを実行します。
注釈
Icebergテーブルは、Snowflakeアカウントと同じリージョンにあるセットの最初のストレージに書き込みし、そこから読み取ります。外部ボリュームの定義とストレージの場所のリージョンを表示するには、 DESCRIBE EXTERNAL VOLUME を実行します。
REMOVE STORAGE_LOCATION
外部ボリュームの定義から指定されたストレージの場所を削除します。複数のストレージの場所を削除するには、各ストレージの場所に対して ALTER EXTERNAL VOLUME ステートメントを実行します。
注釈
アカウントのIcebergテーブルで使用されているアクティブなストレージの場所を削除しようとすると、 ALTER EXTERNAL VOLUME ステートメントは失敗します。
SET ...
外部ボリュームのために設定する1つ以上のプロパティ/パラメーターを指定します(空白、コンマ、または改行で区切り)。
ALLOW_WRITES = TRUE
書き込み操作が外部ボリュームで許可されていることを指定します。Snowflakeをカタログとして使用するIcebergテーブルでは
TRUE
に設定する必要があります。COMMENT = 'string_literal'
外部ボリュームのコメントを指定する文字列(リテラル)。
クラウドプロバイダーのパラメーター(cloudProviderParams
)¶
Amazon S3
STORAGE_PROVIDER = 'S3'
データファイルを保存するクラウドストレージプロバイダーを指定します。
STORAGE_AWS_ROLE_ARN = iam_role
データファイルを含むS3バケットに対する権限を付与する AWS IDおよびアクセス管理(IAM)ロールのAmazonリソースネーム(ARN)を指定します。詳細については、 Amazon S3へのセキュアアクセスの構成 をご参照ください。
STORAGE_BASE_URL = 's3://bucket[/path/]'
クラウドストレージの場所のベース URL を指定します。
bucket
は、データファイルを保存するS3バケットの名前です。
path
は、バケット内のオブジェクトを細かく制御するために使用できるオプションのパスです。ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = 'string' ] ] | [ TYPE = 'NONE' ] )
外部ボリューム上のデータを暗号化するために必要なプロパティを指定します。
TYPE = ...
使用される暗号化タイプを指定します。可能な値は次のとおりです。
AWS_SSE_S3
: S3が管理する暗号化キーを使ったサーバー側の暗号化。詳細については、 Amazon S3が管理する暗号化キー(SSE-S3)を使用したサーバー側暗号化の使用 をご覧ください。
AWS_SSE_KMS
: KMS に格納されたキーを使用したサーバー側の暗号化。詳細については、 AWS キー管理サービス(SSE-KMS)を使用したサーバー側暗号化の使用 をご覧ください。
NONE
:暗号化なし。KMS_KEY_ID = 'string'
(AWS_SSE_KMS
暗号化のみに適用)オプションで、バケットに 書き込まれた ファイルの暗号化に使用する AWS KMS が管理するキーの ID を指定します。値が指定されていない場合、デフォルトの KMS キーを使用して、データの書き込み時にファイルが暗号化されます。
この値はデータの読み込み時には無視されことに注意してください。
Google Cloud Storage
STORAGE_PROVIDER = 'GCS'
データファイルを保存するクラウドストレージプロバイダーを指定します。
STORAGE_BASE_URL = 'gcs://bucket[/path/]'
クラウドストレージの場所のベース URL を指定します。
bucket
は、データファイルを保存するCloud Storageバケットの名前です。
path
は、バケット内のオブジェクトを細かく制御するために使用できるオプションのパスです。ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = 'string' ] | [ TYPE = 'NONE' ] )
外部ボリューム上のデータを暗号化するために必要なプロパティを指定します。
TYPE = ...
使用される暗号化タイプを指定します。可能な値は次のとおりです。
GCS_SSE_KMS
: KMS に格納されたキーを使用したサーバー側の暗号化。詳細については、 顧客管理暗号化キー をご覧ください。
NONE
:暗号化なし。KMS_KEY_ID = 'string'
(GCS_SSE_KMS
暗号化のみに適用)バケットに 書き込まれた ファイルの暗号化に使用するCloud KMS 管理キーの ID を指定します。
この値は、データの読み取り時に無視されます。サービスアカウントにデータと指定された KMS キーに対して十分な権限がある場合、読み取り操作は成功するはずです。
Microsoft Azure
STORAGE_PROVIDER = 'AZURE'
データファイルを保存するクラウドストレージプロバイダーを指定します。
AZURE_TENANT_ID = 'tenant_id'
許可およびブロックされたストレージアカウントが属するOffice 365テナントの ID を指定します。外部ボリュームは1つのテナントのみを認証できるため、許可およびブロックされたストレージの場所は、このテナントに属するすべてストレージアカウントを参照する必要があります。
テナント ID を見つけるには、Azureポータルにログインして Azure Active Directory » Properties をクリックします。テナント ID が Tenant ID フィールドに表示されます。
STORAGE_BASE_URL = 'azure://account.blob.core.windows.net/container[/path/]'
クラウドストレージの場所のベース URL を指定します。
account
はAzureアカウント名で、例えばmyaccount
です。
container
は、データファイルを保存するAzureコンテナーの名前です。
path
は、コンテナー内の論理ディレクトリを細かく制御するために使用できるオプションのパスです。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
OWNERSHIP |
外部ボリューム |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
次の例では、 my-us-east-1
というストレージの場所を exvol1
外部ボリュームから削除します。
ALTER EXTERNAL VOLUME exvol1 REMOVE STORAGE_LOCATION 'my-us-east-1';
次の例では、ストレージの場所を外部ボリュームに追加しています。
Amazon S3
ALTER EXTERNAL VOLUME exvol1
ADD STORAGE_LOCATION =
(
NAME = 'my-s3-us-central-2'
STORAGE_PROVIDER = 'S3'
STORAGE_BASE_URL = 's3://my_bucket_us_central-1/'
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
);
Google Cloud Storage
ALTER EXTERNAL VOLUME exvol2
ADD STORAGE_LOCATION =
(
NAME = 'my-gcs-europe-west4'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://my_bucket_europe-west4/'
);
Microsoft Azure
ALTER EXTERNAL VOLUME exvol3
ADD STORAGE_LOCATION =
(
NAME = 'my-azure-japaneast'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://sfcdev1.blob.core.windows.net/my_container_japaneast/'
AZURE_TENANT_ID = 'a9876545-4321-987b-b23c-2kz436789d0'
);