ALTER EXTERNAL VOLUME

既存の 外部ボリューム のプロパティを変更します。

こちらもご参照ください。

CREATE EXTERNAL VOLUMEDROP EXTERNAL VOLUMESHOW EXTERNAL VOLUMESDESCRIBE EXTERNAL VOLUME

このトピックの内容:

構文

ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> ADD STORAGE_LOCATION = ( NAME = '<storage_location_name>' cloudProviderParams ) ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> REMOVE STORAGE_LOCATION '<storage_location_name>' ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> UPDATE STORAGE_LOCATION = '<s3_compatible_storage_location_name>' CREDENTIALS = ( AWS_KEY_ID = '<string>' AWS_SECRET_KEY = '<string>' ) ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET ALLOW_WRITES = { TRUE | FALSE } ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET COMMENT = '<string_literal>' 
Copy

条件:

cloudProviderParams (for Amazon S3) ::= STORAGE_PROVIDER = '{ S3 | S3GOV }' STORAGE_AWS_ROLE_ARN = '<iam_role>' STORAGE_BASE_URL = '<protocol>://<bucket>[/<path>/]' [ STORAGE_AWS_ACCESS_POINT_ARN = '<string>' ] [ ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] | [ TYPE = 'NONE' ] ) ] [ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ] 
Copy
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' ] ) ] 
Copy
cloudProviderParams (for Microsoft Azure) ::= STORAGE_PROVIDER = 'AZURE' AZURE_TENANT_ID = '<tenant_id>' [ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ] STORAGE_BASE_URL = 'azure://<account>.blob.core.windows.net/<container>[/<path>/]' 
Copy

パラメーター

name

変更する外部ボリュームの識別子を指定します。

識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

ADD STORAGE_LOCATION = ( NAME = 'storage_location_name' cloudProviderParams )

外部ボリューム定義に名前付きストレージの場所を追加します。複数のストレージの場所を追加するには、各ストレージの場所に対して ALTER EXTERNAL VOLUME ステートメントを実行します。

注釈

Apache Iceberg™ テーブルは、Snowflakeアカウントと同じリージョンにあるセットの最初のストレージに書き込みし、そこから読み取ります。外部ボリュームの定義とストレージの場所のリージョンを表示するには、 DESCRIBE EXTERNAL VOLUME を実行します。

REMOVE STORAGE_LOCATION 'storage_location_name'

外部ボリュームの定義から指定されたストレージの場所を削除します。複数のストレージの場所を削除するには、各ストレージの場所に対して ALTER EXTERNAL VOLUME ステートメントを実行します。

注釈

アカウントのIcebergテーブルで使用されているアクティブなストレージの場所を削除しようとすると、 ALTER EXTERNAL VOLUME ステートメントは失敗します。

UPDATE STORAGE_LOCATION = 's3_compatible_storage_location_name'

外部ボリューム定義から指定されたS3互換ストレージの場所を更新します。

CREDENTIALS = ( AWS_KEY_ID = 'string' AWS_SECRET_KEY = 'string' )

S3互換ストレージへの接続とアクセスのための更新されたセキュリティ認証情報を指定します。

SET ...

外部ボリュームのために設定する1つ以上のプロパティ/パラメーターを指定します(空白、コンマ、または改行で区切り)。

ALLOW_WRITES = { TRUE | FALSE }

外部ボリュームに対して書き込み操作を許可するかどうかを指定します。

  • TRUE は、書き込み操作が許可されることを指定します。このパラメーターは、Snowflake管理のIcebergテーブルの TRUE に設定する必要があります。

  • FALSE は、書き込み操作が許可されないことを指定します。外部ボリュームに関連付けられているSnowflake管理のIcebergテーブルがある場合は、このパラメーターの値を FALSE に変更することができません。

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 = 'protocol://bucket[/path/]'

クラウドストレージの場所のベース URL を指定します。

  • protocol は以下のいずれかです。

    • s3 プレフィックスは、中国以外のパブリック AWS リージョンのS3ストレージを参照します。

    • s3gov プレフィックスは、 政府リージョン のS3ストレージを参照します。

  • bucket は、データファイルを保存するS3バケットの名前、またはS3バケットアクセスポイントの バケットスタイルのエイリアス です。S3アクセスポイントの場合は、 STORAGE_AWS_ACCESS_POINT_ARN パラメーターの値も指定する必要があります。

  • path は、バケット内のオブジェクトを細かく制御するために使用できるオプションのパスです。

STORAGE_AWS_ACCESS_POINT_ARN = 'string'

S3アクセスポイントのAmazonリソース名(ARN)を指定します。ストレージ STORAGE_BASE_URL にS3アクセスポイントエイリアスを指定する場合にのみ必要です。

ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = 'string' ] ] | [ TYPE = 'NONE' ] )

外部ボリューム上のデータを暗号化するために必要なプロパティを指定します。

TYPE = ...

使用される暗号化タイプを指定します。可能な値は次のとおりです。

KMS_KEY_ID = 'string'AWS_SSE_KMS 暗号化のみに適用)

オプションで、バケットに 書き込まれた ファイルの暗号化に使用する AWS KMS が管理するキーの ID を指定します。値が指定されていない場合、デフォルトの KMS キーを使用して、データの書き込み時にファイルが暗号化されます。

この値はデータの読み込み時には無視されことに注意してください。

USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }

セキュリティ体制を強化するためにアウトバウンドプライベート接続を使用するかどうかを指定します。このパラメーターの使用に関する情報については、 AWS の外部ボリュームへのプライベート接続 をご参照ください。

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 フィールドに表示されます。

USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }

セキュリティ体制を強化するためにアウトバウンドプライベート接続を使用するかどうかを指定します。このパラメーターの使用に関する情報については、 Microsoft Azure の外部ボリュームへのプライベート接続 をご参照ください。

STORAGE_BASE_URL = 'azure://account.blob.core.windows.net/container[/path/]'

クラウドストレージの場所のベース URL を指定します。

  • account はAzureアカウント名で、例えば myaccount です。

  • container は、データファイルを保存するAzureコンテナーの名前です。

  • path は、コンテナー内の論理ディレクトリを細かく制御するために使用できるオプションのパスです。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

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'; 
Copy

次の例では、ストレージの場所を外部ボリュームに追加しています。

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' ); 
Copy

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/' ); 
Copy

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' ); 
Copy

S3互換ストレージ

S3互換外部ボリュームの認証情報を更新します。

ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE STORAGE_LOCATION = 'my_s3_compat_storage_location' CREDENTIALS = ( AWS_KEY_ID = '4d5e6f...' AWS_SECRET_KEY = '7g8h9i...' ); 
Copy