ALTER EXTERNAL VOLUME

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

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

CREATE EXTERNAL VOLUMEDROP EXTERNAL VOLUMESHOW EXTERNAL VOLUMESDESCRIBE 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>'
Copy

条件:

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' ] ) ]
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>'
  STORAGE_BASE_URL = 'azure://<account>.blob.core.windows.net/<container>[/<path>/]'
Copy

パラメーター

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 = ...

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

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