Einrichten von Snowflake für Verwendung von Git

Wenn Sie ein Git-Repository integrieren und das Repository klonen, erstellt Snowflake einen spezifischen Git-Repository-Stagingbereich, der den Speicherort des Repositorys, die Anmeldeinformationen (falls erforderlich) und Details zur Interaktion von Snowflake mit dem Git-Repository-API angibt.

Um ein Git-Repository mit Snowflake zu verwenden, führen Sie folgende Schritte aus:

  1. Erstellen eines Geheimnisses, das bei Bedarf die Anmeldeinformationen für die Authentifizierung beim Repository enthält.

  2. Erstellen einer API-Integration, um Details zur Interaktion von Snowflake mit dem Git-Repository-API festzulegen.

  3. Erstellen eines Git-Repository-Stagingbereichs in Snowflake, mit dem Sie Dateien aus dem Repository synchronisieren können.

Geheimnis mit Anmeldeinformationen für Authentifizierung erstellen

Wenn Ihr Git-Repository eine Authentifizierung erfordert, müssen Sie ein Geheimnis erstellen, das die Anmeldeinformationen enthält, die Snowflake zur Authentifizierung beim Repository verwenden kann.

Sie werden das Geheimnis in mehreren Fällen verwenden. Beim Erstellen einer API-Integration, die die Interaktion von Snowflake mit der Git-Repository-API spezifiziert, muss dieses Geheimnis als Wert des Parameters ALLOWED_AUTHENTICATION_SECRETS angegeben werden. Zudem muss beim Einrichten von Snowflake für die Git-Verwendung das Geheimnis angegeben werden.

Um ein Geheimnis zu erstellen, müssen Sie eine Rolle verwenden, der folgende Berechtigungen erteilt wurden:

Verwenden Sie am besten ein persönliches Zugriffstoken für den PASSWORD-Wert des Geheimnisses. Informationen zum Erstellen eines persönlichen Zugriffstokens in GitHub finden Sie in der GitHub-Dokumentation unter Verwalten der persönlichen Zugangstokens.

SQL:

Sie können den Befehl CREATE SECRET verwenden, um ein Geheimnis zu erstellen, das die Zugangsdaten für das Git-Repository enthält.

Der Code im folgenden Beispiel erstellt ein Geheimnis namens myco_git_secret mit einem Benutzernamen und dem persönlichen Zugriffstoken des Benutzers, das als Anmeldeinformation verwendet wird:

USE ROLE securityadmin;
CREATE ROLE myco_secrets_admin;
GRANT CREATE SECRET ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_secrets_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_secrets_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE SECRET myco_git_secret
  TYPE = password
  USERNAME = 'gladyskravitz'
  PASSWORD = 'ghp_token';
Copy

API-Integration für Interaktion mit der Repository-API erstellen

Um festzulegen, wie Snowflake mit der Git-Repository-API interagieren soll, müssen Sie eine API-Integration erstellen.

Beim Einrichten eines Snowflake-Kontos zur Git-Verwendung wird die zu verwendende API-Integration angegeben.

Um eine API-Integration zu erstellen, müssen Sie eine Rolle verwenden, der folgende Berechtigungen erteilt wurden:

Wenn Sie eine API-Integration für eine Git-Repository-API erstellen, müssen Sie Folgendes tun:

  • Geben Sie git_https_api als Wert für den Parameter API_PROVIDER an.

  • Geben Sie für den Fall, dass eine Authentifizierung erforderlich ist, ein Geheimnis, das die Anmeldeinformationen für das Repository enthält, als Wert des Parameters ALLOWED_AUTHENTICATION_SECRETS an. Sie können einen der folgenden Werte angeben:

    • Ein oder mehrere Snowflake-Geheimnisse (in einer kommagetrennten Liste), die Snowflake bei der Authentifizierung mit dem Repository verwenden kann

    • Die Zeichenfolge 'all' (Groß-/Kleinschreibung wird nicht berücksichtigt), um anzugeben, dass ein beliebiges Geheimnis verwendet werden kann

    • Die Zeichenfolge 'none' (Groß-/Kleinschreibung wird nicht berücksichtigt), um anzugeben, dass keine Geheimnisse verwendet werden dürfen

SQL:

Sie können den Befehl CREATE API INTEGRATION verwenden, um eine API-Integration zu erstellen, die Details für die Interaktion von Snowflake mit dem Git-Repository-API festlegt.

Der Code im folgenden Beispiel erstellt eine API-Integration namens git_api_integration:

USE ROLE securityadmin;
CREATE ROLE myco_git_admin;
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE myco_git_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_git_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_secrets_admin;
GRANT USAGE ON SECRET myco_git_secret TO ROLE myco_git_admin;

USE ROLE myco_git_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE API INTEGRATION git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-account')
  ALLOWED_AUTHENTICATION_SECRETS = (myco_git_secret)
  ENABLED = TRUE;
Copy

Git-Repository-Stagingbereich erstellen und Repository klonen

Um Snowflake für die Verwendung eines Git-Repositorys einzurichten, erstellen Sie einen Git-Repository-Stagingbereich, der die aus dem Repository abgerufenen Dateien enthält.

Bemerkung

Bevor Sie die in diesem Abschnitt beschriebenen Schritte ausführen, sollten Sie ggf. zuerst ein Geheimnis (wenn das externe Repository eine Authentifizierung erfordert) sowie eine API-Integration erstellen. Möglicherweise benötigen Sie beides.

Der Git-Repository-Stagingbereich gibt Folgendes an:

  • Ursprung des Repositorys

    In Git ist origin die Kurzform für die URL des externen Repositorys. Verwenden Sie diese URL, wenn Sie Snowflake für die Verwendung eines Git-Repositorys einrichten. Die URL muss HTTPS verwenden. Sie können die ursprüngliche URL auf folgende Weise abrufen:

    • Über die GitHub-Benutzeroberfläche: Um die ursprüngliche URL der Startseite des Repositorys zu erhalten, wählen Sie die Schaltfläche Code aus, und kopieren Sie dann die HTTPS-URL aus dem Feld, das unter der Schaltfläche angezeigt wird.

    • Über die Befehlszeile: Verwenden Sie von Ihrem lokalen Repository aus den Befehl git config, wie im folgenden Beispiel gezeigt:

      $ git config --get remote.origin.url
      https://github.com/my-account/snowflake-extensions.git
      
      Copy

      Referenzinformationen zu git config finden Sie in der Git-Dokumentation.

  • Anmeldeinformationen, falls erforderlich, die Snowflake bei der Authentifizierung mit dem Repository verwenden soll

  • Eine API-Integration, die Details zur Interaktion von Snowflake mit der Repository-API angibt

Um einen Git-Repository-Stagingbereich zu erstellen, müssen Sie eine Rolle verwenden, die über die folgenden Berechtigungen verfügt:

  • CREATE GIT REPOSITORY für das Schema, das das Repository enthält

    Weitere Informationen dazu finden Sie unter Anforderungen an die CREATE GIT REPOSITORY-Zugriffssteuerung.

  • USAGE für das Geheimnis, das die Anmeldeinformationen für die Authentifizierung mit Git enthält

  • USAGE für die API-Integration, auf die der Git-Repository-Stagingbereich verweist

Sie können einen Git-Repository-Stagingbereich erstellen, indem Sie entweder Snowsight oder SQL verwenden.

Sie können den Befehl CREATE GIT REPOSITORY verwenden, um einen Git-Repository-Stagingbereich zu erstellen.

Bemerkung

Bevor Sie ein lokales Repository erstellen, müssen Sie erst ein Geheimnis (wenn das externe Repository eine Authentifizierung erfordert) und eine API-Integration erstellen.

Der Code im folgenden Beispiel erstellt einen Git-Repository-Stagingbereich namens snowflake_extensions. Der Stagingbereich gibt die API-Integration git_api_integration und das Geheimnis myco_git_secret mit den Anmeldeinformationen für die Authentifizierung an.

USE ROLE securityadmin;
GRANT CREATE GIT REPOSITORY ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_git_admin;

CREATE OR REPLACE GIT REPOSITORY snowflake_extensions
  API_INTEGRATION = git_api_integration
  GIT_CREDENTIALS = myco_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy