Konfigurieren eines externen Volumes für Iceberg-Tabellen

Unter diesem Thema finden Sie die erforderlichen Informationen zum Konfigurieren eines externen Volumes für Iceberg-Tabellen. Bevor Sie eine Iceberg-Tabelle erstellen können, müssen Sie über ein externes Volume verfügen.

Sie können ein externes Volume für die folgenden Cloudspeicherdienste erstellen:

Externes Volume für Amazon S3 konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Snowflake mithilfe eines externen Volumes eingeschränkten Zugriff auf Ihren eigenen Amazon S3-Bucket gewähren.

Ein Administrator in Ihrer Organisation erteilt dem Benutzer IAM-Berechtigungen in Ihrem Amazon Web Services (AWS)-Konto.

Bemerkung

  • Snowflake unterstützt keine externen Volumes mit Bucket-Namen, die Punkte enthalten (wie z. B. my.s3.bucket). Snowflake verwendet für den Zugriff auf Daten in S3 Pfade und HTTPS im „virtual-hosted-style“-Format. S3 unterstützt jedoch kein SSL bei „virtual-hosted-style“-Buckets mit Punkten im Namen.

  • Um die Anleitung in diesem Abschnitt auszuführen, müssen Sie in AWS über die erforderlichen Berechtigungen zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen verfügen. Wenn Sie kein AWS-Administrator sind, bitten Sie Ihren AWS-Administrator, diese Aufgaben auszuführen.

  • Um die Datenwiederherstellung zu unterstützen, aktivieren Sie die Versionierung für Ihren externen Cloudspeicherort.

Schritt 1: Zugriffsberechtigungen für den S3-Bucket konfigurieren

Anforderungen an die AWS-Zugriffssteuerung

Snowflake benötigt für den Zugriff auf Dateien im Ordner und in Unterordnern die folgenden Berechtigungen für einen S3-Bucket und -Ordner:

  • s3:DeleteObject

  • s3:DeleteObjectVersion

  • s3:GetBucketLocation

  • s3:GetObject

  • s3:GetObjectVersion

  • s3:ListBucket

  • s3:PutObject

Bemerkung

Die Berechtigung s3:PutObject erteilt Schreibzugriff auf den Speicherort des externen Volumes. Um den Schreibzugriff vollständig zu konfigurieren, muss der Parameter ALLOW_WRITES des externen Volumes auf TRUE (den Standardwert) gesetzt werden.

Als bewährte Methode empfiehlt Snowflake, eine spezifische IAM-Richtlinie zu erstellen, die Snowflake Zugriff auf den S3-Bucket gewährt. Sie können dann die Richtlinie an die Rolle anhängen und die von AWS für die Rolle generierten Sicherheitsanmeldeinformationen verwenden, um auf Dateien im Bucket zuzugreifen.

IAM-Richtlinie erstellen

Um die Zugriffsberechtigungen für Snowflake in der AWS-Managementkonsole zu konfigurieren, gehen Sie wie folgt vor:

  1. Melden Sie sich bei der AWS Management Console an.

  2. Wählen Sie im Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:

    Identitäts- und Zugriffsverwaltung in der AWS-Managementkonsole
  3. Wählen Sie im linken Navigationsbereich Account settings aus.

  4. In der Liste Security Token Service Regions finden Sie die Snowflake-Region, in der sich Ihr Konto befindet. Wenn der Status Inactive ist, wählen Sie Activate aus.

  5. Wählen Sie im linken Navigationsbereich Policies aus.

  6. Wählen Sie Create Policy aus:

    Schaltfläche „Richtlinie erstellen“ auf der Seite „Richtlinien“
  7. Wählen Sie die Registerkarte JSON aus.

  8. Fügen Sie eine Richtlinie hinzu, die Snowflake Zugriff auf den S3-Bucket und -Ordner gewährt.

    AWS-Richtlinien unterstützen eine Vielzahl von unterschiedlichen Sicherheitsanwendungsfällen. Die folgende Richtlinie (im JSON-Format) gibt Snowflake die erforderlichen Berechtigungen zum Lesen und Schreiben von Daten über einen einzigen Bucket- und Ordnerpfad.

    Kopieren Sie den Text, und fügen Sie ihn in den Richtlinieneditor ein:

    Bemerkung

    • Ersetzen Sie bucket und prefix durch den tatsächlichen Bucket-Namen bzw. das Ordnerpfad-Präfix.

    • Die Amazon Resource Names (ARN) für Buckets in Regionen für Regierungsbehörden haben das Präfix arn:aws-us-gov:s3:::.

    • Durch Setzen der Bedingung "s3:prefix": auf entweder ["*"] oder ["prefix/*"] wird Zugriff auf alle Präfixe im angegebenen Bucket bzw. Pfad im Bucket gewährt.

    {
       "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>/*"
                         ]
                   }
                }
             }
       ]
    }
    
    Copy
  9. Wählen Sie Review policy aus.

  10. Geben Sie unter Name den Namen der Richtlinie (z. B. snowflake_access) und unter Description eine optionale Beschreibung ein.

    Schaltfläche „Richtlinie erstellen“ auf der Seite „Richtlinie überprüfen“
  11. Wählen Sie Create policy aus.

Schritt 2: IAM-Rolle in AWS erstellen

Erstellen Sie über die AWS Management Console eine AWS-IAM-Rolle, um Berechtigungen für den S3-Bucket mit Ihren Datendateien zu vergeben.

  1. Melden Sie sich bei der AWS Management Console an.

  2. Wählen Sie im Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:

    Identitäts- und Zugriffsverwaltung in der AWS-Managementkonsole
  3. Wählen Sie im linken Navigationsbereich Roles aus.

  4. Wählen Sie Create role aus.

    Seite „Vertrauenswürdige Entität auswählen“ der AWS-Managementkonsole
  5. Wählen Sie für den Typ der vertrauenswürdigen Entität Another AWS account.

  6. Geben Sie im Feld Account ID Ihre eigene AWS-Konto-ID ein. In einem späteren Schritt ändern Sie die Vertrauensstellung und gewähren Snowflake Zugriff.

  7. Wählen Sie die Option Require external ID aus. Eine externe ID wird verwendet, um einer dritten Partei wie Snowflake Zugriff auf Ihre AWS-Ressourcen (wie S3-Buckets) zu gewähren.

    Geben Sie eine Platzhalter-ID ein, z. B. 0000. In einem späteren Schritt werden Sie die Vertrauensstellung für Ihre IAM-Rolle ändern und die externe ID für Ihr externes Volume angeben.

  8. Wählen Sie Next aus.

  9. Suchen Sie die Richtlinie, die Sie in Schritt 1: Zugriffsberechtigungen für den S3-Bucket konfigurieren erstellt haben, und wählen Sie diese Richtlinie aus.

  10. Wählen Sie Next aus.

    Übersichtsseite in AWS-Managementkonsole
  11. Geben Sie einen Namen und eine Beschreibung für die Rolle ein, und wählen Sie Create role aus. Sie haben nun eine IAM-Richtlinie für einen Bucket erstellt, eine IAM-Rolle erstellt und die Richtlinie an die Rolle angehängt.

  12. Notieren Sie den Wert von Role ARN, der auf der Übersichtsseite der Rolle angegeben ist. Sie verwenden diesen Wert im nächsten Schritt, um ein externes Snowflake-Volume zu erstellen, das auf diese Rolle verweist.

    IAM-Rolle

Schritt 3: Der IAM-Rolle die erforderliche Berechtigungen für die SSE-KMS-Verschlüsselung zuweisen (optional)

Um ein mit einem AWS KMS-Schlüssel verschlüsseltes Objekt auf Amazon S3 hochzuladen, benötigt die IAM-Rolle, die Sie in Schritt 2: IAM-Rolle in AWS erstellen erstellt haben, kms:GenerateDataKey-Berechtigungen für den Schlüssel. Um ein mit einem AWS KMS-Schlüssel verschlüsseltes Objekt herunterzuladen, benötigt die IAM-Rolle die Berechtigung kms:Decrypt für den Schlüssel.

Wenn Sie einen KMS-Schlüssel für Ihre serverseitige Verschlüsselung verwenden möchten, führen Sie die folgenden Schritte aus, um einen Schlüssel zu erstellen und ihn zu referenzieren.

  1. Wechseln Sie in der AWS-Managementkonsole zum KMS-Dienst. Wählen Sie in der linken Navigation die Option Customer managed keys und dann die Option Create key aus. Sie müssen einen Schlüssel in der gleichen Region erstellen, in der sich Ihr Bucket befindet.

  2. Erstellen Sie einen symmetrischen Schlüsseltyp. Wählen Sie für die Schlüsselverwendung die Option Encrypt and decrypt aus. Wählen Sie Next aus.

  3. Geben Sie im Feld Alias einen Namen für den Schlüssel ein, und wählen Sie Next aus.

  4. Geben Sie bei Bedarf einen Administrator für den Schlüssel an, und wählen Sie Next aus.

  5. Geben Sie im Schritt Define key usage permissions den Namen Ihrer IAM-Rolle ein. Aktivieren Sie das Kontrollkästchen neben der Rolle, und wählen Sie dann Next aus.

  6. Wählen Sie Finish aus, um den Schlüssel zu erstellen.

  7. Suchen Sie den Schlüssel in der Liste der vom Kunden verwalteten Schlüssel, wählen Sie ihn aus, und notieren Sie seinen ARN. Ein ARN für einen Schlüssel wäre beispielsweise: arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000.

    Wenn Sie Ihr externes Volume erstellen, setzen Sie den Wert KMS_KEY_ID auf den ARN Ihres Schlüssels.

Schritt 4: Externes Volume in Snowflake erstellen

Erstellen Sie mit dem Befehl CREATE EXTERNAL VOLUME ein externes Volume.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzer mit der Rolle ACCOUNTADMIN) ausgeführt werden.

Im folgenden Beispiel wird ein externes Volume erstellt, das einen Amazon S3-Speicherort mit Verschlüsselung definiert:

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

Bemerkung

Optional können Sie den Parameter STORAGE_AWS_EXTERNAL_ID verwenden, um Ihre eigene externe ID anzugeben. Sie können diese Option wählen, um dieselbe externe ID für mehrere externe Volumes und/oder Speicherintegrationen zu verwenden.

Schritt 5: AWS-IAM-Benutzer für Ihr Snowflake-Konto abrufen

  1. Um den ARN für den AWS-IAM-Benutzer abzurufen, der für Ihr Snowflake-Konto automatisch erstellt wurde, verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

    Beispiel:

    DESC EXTERNAL VOLUME exvol;
    
    Copy
  2. Notieren Sie sich die Werte der folgenden Eigenschaften:

    Eigenschaft

    Beschreibung

    STORAGE_AWS_IAM_USER_ARN

    Der AWS-IAM-Benutzer, der für Ihr Snowflake-Konto erstellt wurde, in diesem Beispiel arn:aws:iam::123456789001:user/abc1-b-self1234. Snowflake stellt genau einen IAM-Benutzer für Ihr gesamtes Snowflake-Konto bereit. Dieser IAM-Benutzer wird von allen externen S3-Volumes in Ihrem Konto verwendet.

    STORAGE_AWS_EXTERNAL_ID

    Die externe ID, die Snowflake verwendet, um eine Vertrauensstellung mit AWS einzurichten. Wenn Sie beim Erstellen des externen Volumes keine externe ID (STORAGE_AWS_EXTERNAL_ID) angegeben haben, generiert Snowflake eine ID, die Sie verwenden können.

    Sie geben diese Werte im nächsten Schritt an.

Schritt 6: IAM-Benutzerberechtigungen für den Zugriff auf Bucket-Objekte erteilen

In diesem Schritt konfigurieren Sie Berechtigungen, die dem IAM-Benutzer Ihres Snowflake-Kontos den Zugriff auf Objekte in Ihrem S3-Bucket ermöglichen.

  1. Melden Sie sich bei der AWS Management Console an.

  2. Wählen Sie Identity & Access Management (IAM) aus.

    Identitäts- und Zugriffsverwaltung in der AWS-Managementkonsole
  3. Wählen Sie im linken Navigationsbereich Roles aus.

  4. Wählen Sie die Rolle aus, die Sie in Schritt 2: IAM-Rolle in AWS erstellen erstellt haben.

  5. Wählen Sie die Registerkarte Trust relationships aus.

  6. Wählen Sie Edit trust relationship aus.

  7. Ändern Sie das Richtliniendokument mit den Ausgabewerten, die Sie in Schritt 5: AWS-IAM-Benutzer für Ihr Snowflake-Konto abrufen notiert haben:

    Richtliniendokument für die IAM-Rolle

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<snowflake_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<snowflake_external_id>"
            }
          }
        }
      ]
    }
    
    Copy

    Wobei:

    • snowflake_user_arn ist der von Ihnen notierte STORAGE_AWS_IAM_USER_ARN-Wert.

    • snowflake_external_id ist der von Ihnen notierte STORAGE_AWS_EXTERNAL_ID-Wert.

    Bemerkung

    Sie müssen dieses Richtliniendokument aktualisieren, wenn Sie ein neues externes Volume erstellen (oder ein vorhandenes externes Volume mit der CREATE OR REPLACE EXTERNAL VOLUME-Syntax erneut erstellen) und keine eigene externe ID bereitstellen. Aus Sicherheitsgründen hat ein neues oder neu erstelltes externes Volume eine andere externe ID und kann die Vertrauensstellung nur auflösen, wenn Sie diese Vertrauensrichtlinie aktualisieren.

  8. Wählen Sie Update Trust Policy aus. Die Änderungen werden gespeichert.

Bemerkung

Überprüfen Sie, ob Ihre Berechtigungen korrekt konfiguriert sind, indem Sie eine Iceberg-Tabelle erstellen und dabei dieses externe Volume verwenden. Snowflake prüft die korrekte Konfiguration Ihrer Berechtigungen erst dann, wenn die erste Iceberg-Tabelle, die auf dieses externe Volume verweist, erstellt wird.

Nächste Schritte

Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.

Externes Volume für Google Cloud Storage konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Snowflake mithilfe eines externen Volumes eingeschränkten Zugriff auf einen Google Cloud Storage (GCS)-Bucket gewähren.

Ein Administrator Ihrer Organisation erteilt dem IAM-Benutzer Berechtigungen in Ihrem Google Cloud-Konto.

Bemerkung

  • Um die Anleitung in diesem Abschnitt auszuführen, müssen Sie in Google Cloud über die erforderlichen Berechtigungen zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen verfügen. Wenn Sie kein Google Cloud-Administrator sind, bitten Sie Ihren Google Cloud-Administrator, diese Aufgaben auszuführen.

  • Um die Datenwiederherstellung zu unterstützen, aktivieren Sie die Versionierung für Ihren externen Cloudspeicherort.

Schritt 1: Externes Volume in Snowflake erstellen

Erstellen Sie mit dem Befehl CREATE EXTERNAL VOLUME ein externes Volume.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzer mit der Rolle ACCOUNTADMIN) ausgeführt werden.

Im folgenden Beispiel wird ein externes Volume erstellt, das einen GCS-Speicherort mit Verschlüsselung definiert:

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

Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen

Um die ID für das Cloud Storage-Dienstkonto abzurufen, die für Ihr Snowflake-Konto automatisch erstellt wurde, verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

Beispiel:

DESC EXTERNAL VOLUME exvol;
Copy

Notieren Sie sich den Wert der Eigenschaft STORAGE_GCP_SERVICE_ACCOUNT in der Ausgabe (z. B. service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake stellt genau ein Cloud Storage-Dienstkonto für Ihr gesamtes Snowflake-Konto bereit. Alle externen Google Cloud Storage-Volumes verwenden dieses Dienstkonto.

Schritt 3: Dienstkontoberechtigungen für den Zugriff auf Bucket-Objekte erteilen

In diesem Schritt konfigurieren Sie IAM-Zugriffsberechtigungen für Snowflake in Ihrer Google Cloud Platform Console.

Kundenspezifische IAM-Rolle erstellen

Erstellen Sie eine kundenspezifische Rolle, die über die erforderlichen Berechtigungen verfügt, um auf den Bucket zuzugreifen und Objekte abzurufen.

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie im Startseiten-Dashboard die Option IAM & admin » Roles aus.

  3. Wählen Sie Create Role aus.

  4. Geben Sie einen Namen und eine Beschreibung für die Rolle ein.

  5. Wählen Sie Add Permissions aus.

  6. Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  7. Wählen Sie Create aus.

Kundenspezifische Rolle zum Cloud Storage-Dienstkonto zuweisen

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie im Startseiten-Dashboard die Option Storage » Browser aus:

    Bucket-Liste in der Google Cloud Platform Console
  3. Wählen Sie einen Bucket aus, den Sie für den Zugriff konfigurieren möchten.

  4. Wählen Sie in der rechten oberen Ecke die Option SHOW INFO PANEL aus. Der Informationsbereich für den Bucket wird angezeigt.

  5. Suchen Sie über das Feld Add members in der Ausgabe von Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen nach dem Namen des Dienstkontos:

    Bucket-Informationsbereich in der Google Cloud Platform Console
  6. Wählen Sie in der Dropdown-Liste Select a role die Option Storage » Custom » <Rolle> aus. Die <Rolle> ist die benutzerdefinierte Cloudspeicherrolle, die Sie in Kundenspezifische IAM-Rolle erstellen erstellt haben.

  7. Wählen Sie Add aus. Der Name des Dienstkontos wird der Dropdown-Liste Storage Object Viewer im Informationsbereich hinzugefügt.

    Rollenliste des Storage Object Viewers in der Google Cloud Platform Console

Bemerkung

Überprüfen Sie, ob Ihre Berechtigungen korrekt konfiguriert sind, indem Sie eine Iceberg-Tabelle erstellen und dabei dieses externe Volume verwenden. Snowflake prüft die korrekte Konfiguration Ihrer Berechtigungen erst dann, wenn die erste Iceberg-Tabelle, die auf dieses externe Volume verweist, erstellt wird.

Dem Cloud Storage-Dienstkonto Berechtigungen für kryptografische Schlüssel des Cloud Key Management Service zuweisen

Bemerkung

Dieser Schritt ist nur dann erforderlich, wenn Ihr GCS-Bucket mit einem in Google Cloud Key Management Service (Cloud KMS) gespeicherten Schlüssel verschlüsselt ist.

  1. Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.

  2. Wählen Sie im Startseiten-Dashboard die Option Security » Cryptographic keys aus.

  3. Wählen Sie den Schlüsselring aus, der Ihrem GCS-Bucket zugewiesen ist.

  4. Wählen Sie in der rechten oberen Ecke die Option SHOW INFO PANEL aus. Der Informationsbereich für den Schlüsselring wird angezeigt.

  5. Suchen Sie über das Feld Add members in der DESCRIBE EXTERNAL VOLUME-Ausgabe von Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen nach dem Namen des Dienstkontos:

  6. Wählen Sie in der Dropdown-Liste Select a role die Rolle Cloud KMS CryptoKey Encrypter/Decrypter aus.

  7. Wählen Sie Add aus. Der Name des Dienstkontos wird der Dropdown-Liste Cloud KMS CryptoKey Encrypter/Decrypter im Informationsbereich hinzugefügt.

Nächste Schritte

Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.

Externes Volume für Azure Storage konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Snowflake mithilfe eines externen Volumes eingeschränkten Zugriff auf Ihren eigenen Microsoft Azure (Azure)-Container gewähren. Snowflake unterstützt die folgenden Azure-Cloudspeicherdienste für externe Volumes:

  • Blob-Speicher

  • Data Lake Storage Gen2

  • General Purpose v1

  • General Purpose v2

Ein Administrator Ihrer Organisation erteilt dem IAM-Benutzer Berechtigungen in Ihrem Azure-Konto.

Bemerkung

  • Um die Anleitung in diesem Abschnitt auszuführen, müssen Sie in Azure über die erforderlichen Berechtigungen zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen verfügen. Wenn Sie kein Azure-Administrator sind, bitten Sie Ihren Azure-Administrator, diese Aufgaben auszuführen.

  • Um die Datenwiederherstellung zu unterstützen, aktivieren Sie die Versionierung für Ihren externen Cloudspeicherort.

Schritt 1: Externes Volume in Snowflake erstellen

Erstellen Sie mit dem Befehl CREATE EXTERNAL VOLUME ein externes Volume.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzer mit der Rolle ACCOUNTADMIN) ausgeführt werden.

Im folgenden Beispiel wird ein externes Volume erstellt, das einen Azure-Speicherort mit Verschlüsselung definiert:

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

Bemerkung

Verwenden Sie bei der Angabe eines Wertes für STORAGE_BASE_URL das Präfix azure:// und nicht das Präfix https://.

Schritt 2: Snowflake Zugriff auf den Speicherort gewähren

  1. Verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME, um eine URL abzurufen, die auf die Seite der Microsoft-Berechtigungsanforderung führt. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

    DESC EXTERNAL VOLUME exvol;
    
    Copy

    Notieren Sie sich die Werte der folgenden Eigenschaften:

    Eigenschaft

    Beschreibung

    AZURE_CONSENT_URL

    URL der Microsoft-Berechtigungsanforderungsseite.

    AZURE_MULTI_TENANT_APP_NAME

    Name der Snowflake-Clientanwendung, die für Ihr Konto erstellt wurde. In einem späteren Schritt in dieser Anleitung müssen Sie dieser Anwendung die Berechtigung erteilen, ein Zugriffstoken für Ihren zulässigen Speicherort zu erhalten.

    Sie verwenden diese Werte in den folgenden Schritten.

  2. Rufen Sie in einem Webbrowser die Seite der Microsoft-Berechtigungsanforderung auf (die AZURE_CONSENT_URL).

  3. Wählen Sie Accept aus. Mit dieser Aktion kann der Azure-Dienstprinzipal, der für Ihr Snowflake-Konto erstellt wurde, ein Zugriffstoken für eine beliebige Ressource in Ihrem Mandantenbereich erhalten. Das Abrufen eines Zugriffstokens ist nur erfolgreich, wenn Sie dem Dienstprinzipal die entsprechenden Berechtigungen für den Container erteilen (siehe nächster Schritt).

    Die Microsoft-Berechtigungsanforderungsseite leitet auf die Snowflake-Firmenwebsite (snowflake.com) um.

  4. Melden Sie sich beim Microsoft Azure-Portal an.

  5. Rufen Sie Azure Services » Storage Accounts auf. Wählen Sie den Namen des Speicherkontos aus, auf das Sie dem Snowflake-Dienstprinzipal Zugriff gewähren möchten.

    Bemerkung

    Sie müssen die IAM-Berechtigungen für ein externes Volume auf der Ebene des Speicherkontos festlegen, nicht auf der Ebene des Containers.

  6. Wählen Sie Access Control (IAM) » Add role assignment aus.

  7. Wählen Sie die Rolle Storage Blob Data Contributor aus, um Lese- und Schreibzugriff auf den Snowflake-Dienstprinzipal zu gewähren.

    Bemerkung

    Die Rolle Storage Blob Data Contributor gewährt Schreibzugriff auf den Speicherort des externen Volumes. Um den Schreibzugriff vollständig zu konfigurieren, muss der Parameter ALLOW_WRITES des externen Volumes auf TRUE (den Standardwert) gesetzt werden.

  8. Suchen Sie nach dem Snowflake-Dienstprinzipal. Dies ist die Identität in der Eigenschaft AZURE_MULTI_TENANT_APP_NAME der Ausgabe von DESC EXTERNAL VOLUME (in Schritt 1). Suchen Sie in der Eigenschaft AZURE_MULTI_TENANT_APP_NAME nach der Zeichenfolge vor dem Unterstrich.

    Wichtig

    • Es kann eine Stunde oder länger dauern, bis Azure den über die oben genannte Microsoft-Anforderungsseite angeforderten Snowflake-Dienstprinzipal erstellt hat. Wenn der Dienstprinzipal nicht sofort verfügbar ist, müssen Sie ein bis zwei Stunden warten und ihn dann erneut suchen.

    • Wenn Sie den Dienstprinzipal löschen, funktioniert das externe Volume nicht mehr.

    Rollenzuweisung über Azure Storage-Konsole hinzufügen
  9. Wählen Sie Review + assign aus.

    Bemerkung

    Beim Zuweisen einer Rolle kann es bis zu 10 Minuten dauern, bis die Änderungen wirksam werden. Weitere Informationen dazu finden Sie in der Microsoft Azure-Dokumentation unter Symptom: Änderungen bei der Rollenzuweisung werden nicht erkannt.

Bemerkung

Überprüfen Sie, ob Ihre Berechtigungen korrekt konfiguriert sind, indem Sie eine Iceberg-Tabelle erstellen und dabei dieses externe Volume verwenden. Snowflake prüft die korrekte Konfiguration Ihrer Berechtigungen erst dann, wenn die erste Iceberg-Tabelle, die auf dieses externe Volume verweist, erstellt wird.

Nächste Schritte

Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.

Aktivieren der Versionierung für Ihren externen Cloudspeicher

Die Daten der Iceberg-Tabelle werden in einem externen Cloudspeicher gespeichert, den Sie verwalten. Wenn sich die Daten in einem zentralen Daten-Repository (oder Data Lake) befinden, der von mehreren Tools und Diensten genutzt wird, kann es zu einer versehentlichen Löschung oder Beschädigung kommen.

Um die Wiederherstellung von Objekten zu unterstützen, können Sie die Versionierung für Ihren externen Cloudspeicher aktivieren.

Aktiver Speicherort

Während des Vorschauzeitraums unterstützt jedes externe Volume einen einzigen aktiven Speicherort. Der aktive Speicherort bleibt während der gesamten Lebensdauer des externen Volumes gleich.

Wenn Sie beim Erstellen eines externen Volumes mehrere Speicherorte erstellen, weist Snowflake einen Speicherort als aktiven Speicherort für das externe Volume zu.

Die Zuweisung erfolgt, wenn die erste Tabelle erstellt wird, die das externe Volume verwendet. Snowflake verwendet die folgende Logik, um einen aktiven Speicherort auszuwählen:

  • Wenn die Liste STORAGE_LOCATIONS einen oder mehrere lokale Speicherorte enthält, verwendet Snowflake den ersten lokalen Speicherort in der Liste. Ein lokaler Speicherort befindet sich bei demselben Cloudanbieter und in derselben Region wie Ihr Snowflake-Konto.

  • Wenn die Liste STORAGE_LOCATIONS keine lokalen Speicherorte enthält, wählt Snowflake den ersten Speicherort in der Liste aus.

Bemerkung

  • Cloud-/regionsübergreifende Iceberg-Tabellen werden nur unterstützt, wenn Sie eine Katalogintegration verwenden. Weitere Informationen dazu finden Sie unter Cloud-/regionsübergreifende Unterstützung.

  • Externe Volumes, die vor Snowflake-Version 7.44 erstellt wurden, haben möglicherweise eine andere Logik zur Auswahl eines aktiven Speicherorts verwendet.

Externes Volume auf Konto-, Datenbank- oder Schemaebene festlegen

Um zu definieren, welches vorhandene externe Volume für Iceberg-Tabellen verwendet werden soll, können Sie den Parameter EXTERNAL_VOLUME auf den folgenden Ebenen einstellen:

Konto:

Kontoadministratoren können mit dem Befehl ALTER ACCOUNT die Parameter für das Konto festlegen. Wenn der Wert für das Konto festgelegt ist, werden die Lese- und Schreiboperationen aller im Konto erstellten Iceberg-Tabellen standardmäßig auf diesem externen Volume ausgeführt.

Objekt:

Benutzer können den entsprechenden CREATE <Objekt>- oder ALTER <Objekt>-Befehl ausführen, um den Parameterwert von EXTERNAL_VOLUME auf Datenbank- oder Schema-Ebene zu überschreiben. Es wird die Deklaration mit dem kleinsten Geltungsbereich verwendet: Schema > Datenbank > Konto.

Zusätzlich zu den Mindestberechtigungen, die für das Ändern eines Objekts mit dem entsprechenden ALTER <Objekttyp>-Befehl erforderlich sind, muss eine Rolle die USAGE-Berechtigung für das externe Volume haben.

Beispiel

Mit der folgenden Anweisung wird ein externes Volume (my_s3_vol) für eine Datenbank namens my_database_1 festgelegt:

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

Nachdem Sie ein externes Volume auf Datenbankebene festgelegt haben, können Sie eine Iceberg-Tabelle in dieser Datenbank erstellen, ohne ein externes Volume angeben zu müssen. Mit der folgenden Anweisung wird eine Iceberg-Tabelle in my_database_1 erstellt, die Snowflake als Katalog und das für die Datenbank als Standard-Volume festgelegte externe Volume (my_s3_vol) verwendet.

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