DDBM Blog

Snowflake Notebooks gebruiken met een GitLab repository

Geschreven door Chris Verweij | 15 Aug, 2025

De introductie van Snowflake Notebooks heeft verkennende gegevensanalyse veel eenvoudiger en toegankelijker gemaakt. In plaats van een externe verbinding via Snowflake op te zetten vanuit een Jupyter Notebook dat elders draait, kunnen gebruikers hun Notebooks direct in Snowsight plaatsen en Snowflake gebruiken als datawarehouse en rekenmachine. Echter, met het overbrengen van data science code naar Snowflake komt de noodzaak voor collaborative sourcing en versiebeheer.

Externe Git repositories en Snowflake Notebooks

Snowflake ondersteunt een breed scala aan externe Git repositories, hoewel niet allemaal in dezelfde mate. Github ondersteunt bijvoorbeeld oauth om verbinding te maken, terwijl andere platformen dat (nog) niet doen. In deze blog zullen we kijken naar het integreren van een GitLab repository door middel van project access tokens. Deze blog gaat ook niet in op de (publieke preview) Snowflake Workspaces. Hoewel Workspaces een meer gecentraliseerde manier bieden om verbinding te maken met Git repositories, ondersteunen ze op dit moment geen Notebooks bewerken.

Een persoonlijk toegangstoken instellen en opslaan

Om met een GitLab repository te verbinden, moeten we een project access token aanmaken. Navigeer in je GitLab project naar instellingen -> toegangstokens om te beginnen. Bij het toevoegen van een nieuw project access token, kunnen we een vervaldatum, een rol en een scope kiezen. Voor een Snowflake verbinding heeft het token lees- en schrijftoegang tot je project nodig, wat je kunt afdekken door de algemene 'api' scope te gebruiken. Wanneer u bevestigt dat u een token wilt aanmaken, is dit de enige keer dat u het kunt kopiƫren en opslaan. Tokens kunnen worden geroteerd (opnieuw gegenereerd) en verwijderd, maar niet worden teruggevonden als ze verloren gaan. Kopieer je token voor nu naar een tijdelijke veilige plek. Niet dat we het verderop in deze tutorial nog twee keer zullen gebruiken.

Een geheim opslaan

Aan de kant van Snowflake slaan we dit token op als een geheim. Geheimen zijn ontworpen om gevoelige sleutels veilig op te slaan in Snowflake en ze te gebruiken als referenties. We zullen het GitLab token opslaan als een wachtwoord type, wat betekent dat we ook een niet lege gebruikersnaam nodig hebben. Deze gebruikersnaam kan op dit punt van alles zijn, en zal geen invloed hebben op hoe daadwerkelijke pushes naar het repository vanuit een Notebook ondertekend zullen worden. De volgende SQL-code kan worden gebruikt in een werkblad om een geheim aan te maken:
CREATE OR REPLACE SECRET <database>.<schema>.gitlab_api_key
TYPE = PASSWORD
USERNAME='USERNAME@EMAIL.COM'
PASSWORD = '<GITLAB TOKEN HIER>';

Merk op dat een geheim een object op schema-niveau is. Hoewel het niet wordt weergegeven in Snowsight tijdens het verkennen van je databasestructuur, wordt het in feite opgeslagen met een volledig gekwalificeerde naam en locatie. Als je alleen een naam opgeeft, wordt de secret opgeslagen in de database en het schema die op dat moment zijn geselecteerd in je werkblad. We hebben de volledig gekwalificeerde naam nodig voor onze volgende SQL, waarin we een git API integratie maken.

Een API integratie maken

CREATE OR REPLACE API INTEGRATION gitlab_api_integration
API_PROVIDER = git_https_api
API_ALLOWED_PREFIXES = ('https://gitlab.com')
ALLOWED_AUTHENTICATION_SECRETS = (<database>.<schema>.gitlab_api_key)
ENABLED = TRUE;

De integratie is, in tegenstelling tot het geheim, een object op accountniveau. Elke Snowflake gebruiker die deze git integratie gaat gebruiken zal expliciete toegang moeten hebben via hun rol. Zorg er daarom voor dat je GRANT USAGE geeft op zowel het geheim als de integratie aan de relevante rollen.
GRANT USAGE ON SECRET gitlab_api_key TO ROLE <NOTEBOOK_ROLE>;
GRANT USAGE ON INTEGRATION gitlab_api_integration TO ROLE <NOTEBOOK_ROLE>;

De GitLab repository verbinden

Een bestaand Notebook aan Snowflake koppelen

Als je al een bestaand Jupyter-notebook (.ipynb) in je git repository klaar hebt staan, kun je dit direct aan Snowflake koppelen. Navigeer naar Notitieboeken onder het kopje Projecten, klik op de pijl naar beneden naast de knop '+ Notitieboek' rechtsboven en selecteer 'Maken vanuit repository'. Nadat je het notitieboek een naam hebt gegeven (dit wordt de naam in Snowflake), kun je de bestandslocatie in het archief selecteren.

Omdat dit de eerste keer is dat je verbinding maakt met het archief, klik je nu op 'Git archief aanmaken'. Dit opent een dialoogvenster waarin je de URL van je repository kunt plakken en een naam kunt geven voor Snowflake. Selecteer voor 'API integratie' de integratie die we in de vorige stap hebben gemaakt. Selecteer een database en schema om het archief op te slaan en voeg indien nodig een opmerking toe. Zet nu de schuif Authenticatie op ingeschakeld en selecteer het geheim dat we in de eerste stap van deze tutorial hebben gemaakt. Gefeliciteerd, je hebt nu succesvol je Git repository gekoppeld! De volgende keer dat je een bestand toevoegt vanuit hetzelfde repository, kun je het bestaande repository object selecteren en deze paragraaf overslaan.

De eerste keer dat een Snowflake gebruiker een bestand uit een repository koppelt, zal Snowflake ook gebruikersspecifieke referenties willen hebben, die gebruikt worden om te tekenen voor alle commits en pushes die door jou gemaakt worden. Omdat de Gitlab API sleutel geen inherente gebruiker heeft, kun je hetzelfde token hergebruiken als je Persoonlijke Toegang token (in feite kan iedere gebruiker hetzelfde token gebruiken), en je eigen Auteursnaam en Auteur e-mail toevoegen om je commits te identificeren. Deze gegevens worden door Snowflake opgeslagen voor verder gebruik. Natuurlijk ben je ook vrij om aparte persoonlijke toegangstokens te maken voor iedere gebruiker. Dit kan het makkelijker maken om tokens te roteren en in te trekken als dat nodig is.

Een door Snowflake gemaakt notitieboek verbinden met Git

Als je in plaats daarvan al een notitieboek hebt gemaakt op Snowflake, en dit nu naar je Git repository wilt pushen, dan is dit ook mogelijk. Met het notitieboek open, druk je op 'Connect Git Repository' in de linkerbovenhoek. Net als bij het bovenstaande proces, als dit de eerste keer is dat je Snowflake aan deze specifieke Git repository koppelt, moet je het repository-object maken en de eerder gemaakte API-integratie en het geheim selecteren om de verbinding tot stand te brengen. Als het archief al bestaat als een object op schema-niveau, kunt u dit in plaats daarvan selecteren.

Opmerking Snowflake maakt of overschrijft automatisch een map met de naam van het notitieboek in de gekoppelde opslagplaats. Als dit de eerste keer is dat u (als Snowflake-gebruiker) een bestand naar dit archief pusht, zal Snowflake persoonlijke referenties willen opslaan en u nogmaals om uw persoonlijke toegangstoken vragen. Zoals hierboven beschreven, kan dit voor iedere gebruiker hetzelfde PAT zijn, of een aparte voor iedere gebruiker, omdat Gitlab ze niet als gebruikersspecifiek beschouwt.