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:
Erstellen eines Geheimnisses, das bei Bedarf die Anmeldeinformationen für die Authentifizierung beim Repository enthält.
Erstellen einer API-Integration, um Details zur Interaktion von Snowflake mit dem Git-Repository-API festzulegen.
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:
CREATE SECRET für das Schema, in dem das Geheimnis gespeichert werden soll.
Weitere Informationen dazu finden Sie unter Anforderungen an die CREATE SECRET-Zugriffssteuerung.
USAGE für Datenbank und Schema, die die Integration enthalten werden.
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';
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:
CREATE INTEGRATION für das Konto
Weitere Informationen dazu finden Sie unter Anforderungen an die CREATE API INTEGRATION-Zugriffssteuerung.
USAGE für Datenbank und Schema, die das Geheimnis enthalten
USAGE für das Geheimnis, dass die Integration referenziert
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 kannDie 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;
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
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';
Sie können Snowsight verwenden, um ein Git-Repository in Snowflake zu integrieren.
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Data » Databases aus.
Wählen Sie im Objekt-Explorer die Datenbank und das Schema aus, die den Git-Repository-Stagingbereich enthalten sollen, den Sie erstellen.
Wählen Sie Create » Git Repository aus.
Geben Sie im Dialog Create Git Repository unter Repository Name einen Namen ein, der dieses Repository im Schema eindeutig identifiziert.
Richtlinien zur Namensgebung finden Sie unter Anforderungen an Bezeichner.
Origin: Geben Sie die ursprüngliche URL des externen Repositorys ein.
Wählen Sie im Dropdown-Menü API Integration die API-Integration aus, auf die Sie beim Erstellen des Repository-Stagingbereichs verweisen möchten.
Wenn Sie keine API-Integration verwenden können, wählen Sie Create new API integration in Worksheets aus, um mit SQL eine zu erstellen. Weitere Informationen dazu finden Sie unter API-Integration für Interaktion mit der Repository-API erstellen und CREATE API INTEGRATION.
Optional: Geben Sie unter Comment einen Text ein, der diese Integration für andere beschreibt.
Authentication: Wenn das externe Repository eine Authentifizierung erfordert, aktivieren Sie den Umschalter.
Wenn Sie den Umschalter aktivieren, wählen Sie im Dropdown-Menü Secret das Geheimnis aus, das von der Git-Integration referenziert werden soll, um sich beim externen Repository zu authentifizieren.
Wenn Sie kein Geheimnis verwenden können, wählen Sie Create new secret in Worksheets aus, um eines mit SQL zu erstellen. Weitere Informationen dazu finden Sie unter Geheimnis mit Anmeldeinformationen für Authentifizierung erstellen und CREATE SECRET.
Wählen Sie Create aus.
Wenn Sie die Integration erfolgreich erstellt haben, erscheint das Repository unterhalb des Schemas in einem Verzeichnis Git Repositories. Sie werden auch eine Seite sehen, die die Verzeichnisse, Zweige und Tags des Repositorys auflistet.