ALTER EXTERNAL VOLUME

Ändert die Eigenschaften eines bestehenden externen Volumes.

Siehe auch:

CREATE EXTERNAL VOLUME, DROP EXTERNAL VOLUME, SHOW EXTERNAL VOLUMES, DESCRIBE EXTERNAL VOLUME

Unter diesem Thema:

Syntax

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

Wobei:

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

Parameter

name

Gibt den Bezeichner für das zu ändernde externe Volume an.

Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

ADD STORAGE_LOCATION

Fügt den angegebenen Speicherort zur Definition des externen Volumes hinzu. Um mehrere Speicherorte hinzuzufügen, führen Sie für jeden Speicherort eine ALTER EXTERNAL VOLUME-Anweisung aus.

Bemerkung

Iceberg-Tabellen schreiben in den ersten Speicherort des Satzes, das sich in derselben Region wie Ihr Snowflake-Konto befindet, bzw. lesen daraus. Um die Definition und die Speicherortregionen des externen Volumes anzuzeigen, führen Sie DESCRIBE EXTERNAL VOLUME aus.

REMOVE STORAGE_LOCATION

Entfernt den angegebenen Speicherort aus der Definition des externen Volumes. Um mehrere Speicherorte zu entfernen, führen Sie für jeden Speicherort eine ALTER EXTERNAL VOLUME-Anweisung aus.

Bemerkung

Die ALTER EXTERNAL VOLUME-Anweisung schlägt fehl, wenn Sie versuchen, den von Iceberg-Tabellen Ihres Kontos verwendeten aktiven Speicherort zu entfernen.

SET ...

Gibt eine oder mehrere Eigenschaften/Parameter an, die für das externe Volume festgelegt werden sollen (getrennt durch Leerzeichen, Kommas oder Neue-Zeile-Zeichen):

ALLOW_WRITES = TRUE

Gibt an, dass Schreiboperationen für das externe Volume erlaubt sind; muss bei Iceberg-Tabellen, die Snowflake als Katalog verwenden, auf TRUE gesetzt werden.

COMMENT = 'string_literal'

Zeichenfolge (Literal), die einen Kommentar zum externen Volume enthält.

Cloudanbieterparameter (cloudProviderParams)

Amazon S3

STORAGE_PROVIDER = 'S3'

Gibt den Cloudspeicheranbieter an, der Ihre Datendateien speichert.

STORAGE_AWS_ROLE_ARN = iam_role

Gibt den Amazon Resource Name (ARN) der AWS-Rolle für Identitäts- und Zugriffsverwaltung (IAM) an, die Berechtigungen für den S3-Bucket mit Ihren Datendateien gewährt. Weitere Informationen dazu finden Sie unter Konfigurieren des sicheren Zugriffs auf Amazon S3.

STORAGE_BASE_URL = 's3://bucket[/path/]'

Gibt die Basis-URL für Ihren Cloudspeicherort an, wobei:

  • bucket ist der Name des S3-Buckets, in dem Ihre Datendateien gespeichert sind.

  • path ist ein optionaler Pfad, mit dem Sie Objekte im Bucket genauer steuern können.

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

Gibt die Eigenschaften an, die zur Verschlüsselung von Daten auf dem externen Volume erforderlich sind.

TYPE = ...

Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

KMS_KEY_ID = 'string' (gilt nur für AWS_SSE_KMS-Verschlüsselung)

Gibt optional die ID für den AWS-KMS-verwalteten Schlüssel an, der zum Verschlüsseln von Dateien verwendet wird, die in den Bucket geschrieben wurden. Wenn kein Wert angegeben wird, werden die Dateien zum Schreiben von Daten mit Ihrem standardmäßigen KMS-Schlüssel verschlüsselt.

Beachten Sie, dass dieser Wert beim Lesen von Daten ignoriert wird.

Google Cloud Storage

STORAGE_PROVIDER = 'GCS'

Gibt den Cloudspeicheranbieter an, der Ihre Datendateien speichert.

STORAGE_BASE_URL = 'gcs://bucket[/path/]'

Gibt die Basis-URL für Ihren Cloudspeicherort an, wobei:

  • bucket ist der Name eines Cloud Storage-Buckets, in dem Ihre Datendateien gespeichert sind.

  • path ist ein optionaler Pfad, mit dem Sie Objekte im Bucket genauer steuern können.

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

Gibt die Eigenschaften an, die zur Verschlüsselung von Daten auf dem externen Volume erforderlich sind.

TYPE = ...

Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

KMS_KEY_ID = 'string' (gilt nur für GCS_SSE_KMS-Verschlüsselung)

Gibt die ID für den Cloud-KMS-verwalteten Schlüssel an, der zum Verschlüsseln von Dateien verwendet wird, die in den Bucket geschrieben wurden.

Dieser Wert wird beim Lesen von Daten ignoriert. Die Leseoperation sollte erfolgreich sein, wenn das Dienstkonto über ausreichende Berechtigungen für die Daten und alle angegebenen KMS-Schlüssel verfügt.

Microsoft Azure

STORAGE_PROVIDER = 'AZURE'

Gibt den Cloudspeicheranbieter an, der Ihre Datendateien speichert.

AZURE_TENANT_ID = 'tenant_id'

Gibt die ID Ihres Office 365-Mandanten an, zu dem die zulässigen und gesperrten Speicherkonten gehören. Die Authentifizierung eines externen Volumes kann nur für einen einzigen Mandanten erfolgen. Daher müssen sich die zulässigen und blockierten Speicherorte auf Speicherkonten beziehen, die alle zu diesem einen Mandanten gehören.

Melden Sie sich beim Azure-Portal an, und klicken Sie auf Azure Active Directory » Properties, um Ihre Mandanten-ID zu ermitteln. Die Mandanten-ID wird im Feld Tenant ID angezeigt.

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

Gibt die Basis-URL für Ihren Cloudspeicherort an, wobei:

  • account ist der Name Ihres Azure-Kontos, z. B. myaccount.

  • container ist der Name des Azure-Containers, in dem Ihre Datendateien gespeichert sind.

  • path ist ein optionaler Pfad, mit dem Sie logische Verzeichnisse im Container genauer steuern können.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

OWNERSHIP

Externes Volume

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

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

Metadaten:

Achtung

Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Im folgenden Beispiel wird der Speicherort my-us-east-1 aus dem externen Volume exvol1 entfernt:

ALTER EXTERNAL VOLUME exvol1 REMOVE STORAGE_LOCATION 'my-us-east-1';
Copy

Im folgenden Beispiele wird ein Speicherort zu einem externen Volume hinzugefügt:

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