Tutorial: Eine Snowflake Native App mit Snowpark Container Services erstellen¶
Einführung¶
In diesem Tutorial wird beschrieben, wie Sie eine Snowflake Native App with Snowpark Container Services erstellen. Eine Snowflake Native App with Snowpark Container Services ist eine Snowflake Native App, die Container-Workloads in Snowflake ausführt. Snowflake Native Apps with Snowpark Container Services können beliebige containerisierte Dienste ausführen und dabei alle Features des Snowflake Native App Framework nutzen, einschließlich Sicherheit, Protokollierung, Data Sharing und Anwendungslogik.
Dieses Tutorial verwendet sowohl Snowflake CLI als auch Snowsight, um die erforderlichen Aufgaben auszuführen.
Lerninhalte¶
In diesem Tutorial erfahren Sie Folgendes:
Verwenden der Snowflake CLI, um ein Snowflake Native App with Snowpark Container Services-Projekt zu initialisieren.
Erstellen eines Docker-Image für eine App.
Erstellen des Anwendungspakets und der erforderlichen Anwendungsdateien für eine Snowflake Native App with Snowpark Container Services.
Testen einer Snowflake Native App with Snowpark Container Services, indem die Dienstfunktion innerhalb des Containers aufgerufen wird.
Voraussetzungen¶
Um dieses Tutorial auszuführen, müssen Sie die folgenden Voraussetzungen erfüllen:
Zugriff auf ein Snowflake-Konto, das Snowpark Container Services unterstützt.
Sie müssen in der Lage sein, mit der Rolle ACCOUNTADMIN die in diesem Tutorial verwendete Rolle zu erstellen und dieser Rolle die erforderlichen Berechtigungen zuzuweisen.
Sie müssen Snowflake CLI Version
3.0.0
oder höher auf Ihrem lokalen Computer installiert haben.Sie müssen Docker Desktop auf Ihrem lokalen Computer installiert haben.
Rolle für dieses Tutorial einrichten¶
Dieses Tutorial führt Sie durch den Prozess der Erstellung einer Snowflake Native App with Snowpark Container Services mit der Rolle tutorial_role
. Bevor Sie dieses Tutorial durcharbeiten können, muss ein Snowflake-Benutzer mit der Rolle ACCOUNTADMIN die folgenden Schritte ausführen, um diese Rolle zu konfigurieren.
Um die Rolle tutorial_role
zu erstellen und einzurichten, gehen Sie wie folgt vor:
Führen Sie den folgenden Befehl aus, um die Rollen
tutorial_role
zu erstellen:CREATE ROLE tutorial_role;
Um dem Snowflake-Benutzer, der das Tutorial durchführen wird, die Rolle
tutorial_role
zuzuweisen, führen Sie folgenden Befehl aus:GRANT ROLE tutorial_role TO USER <user_name>;
Wobei:
user_name
Geben Sie den Namen des Benutzers an, der das Tutorial durchführen wird.
Um die Berechtigungen zu erteilen, die zum Erstellen und Verwenden der von einer Container-App benötigten Snowflake-Objekte erforderlich sind, führen Sie die folgenden Befehle aus:
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE tutorial_role; GRANT CREATE WAREHOUSE ON ACCOUNT TO ROLE tutorial_role; GRANT CREATE DATABASE ON ACCOUNT TO ROLE tutorial_role; GRANT CREATE APPLICATION PACKAGE ON ACCOUNT TO ROLE tutorial_role; GRANT CREATE APPLICATION ON ACCOUNT TO ROLE tutorial_role; GRANT CREATE COMPUTE POOL ON ACCOUNT TO ROLE tutorial_role WITH GRANT OPTION; GRANT BIND SERVICE ENDPOINT ON ACCOUNT TO ROLE tutorial_role WITH GRANT OPTION;
Nachdem Sie die Aufgaben dieses Abschnitts ausgeführt haben, hat der Benutzer, dem die Rolle tutorial_role
für sein Konto zugewiesen wurde, die Berechtigung, alle Snowflake-Objekte zu erstellen, die für das Erstellen einer Snowflake Native App with Snowpark Container Services erforderlich sind. Wir werden diese Rolle im weiteren Verlauf dieses Tutorials verwenden.
In einer realen Situation benötigt ein Anbieter möglicherweise ähnliche Berechtigungen oder Zugriff auf bestehende Objekte, um eine App mit Containern zu entwickeln, einschließlich Computepool, Warehouse und Datenbank.
Erforderliche Objekte in Ihrem Konto erstellen¶
In diesem Abschnitt werden Sie einige Snowflake-Objekte erstellen, die für eine Snowflake Native App with Snowpark Container Services benötigt werden.
Snowflake CLI-Verbindung einrichten¶
Bei den Befehlen, die Sie in diesem Tutorial ausführen, wird davon ausgegangen, dass Sie Snowflake CLI so konfiguriert haben, dass es sich standardmäßig mit dem Konto verbindet, in dem Sie die App entwickeln. Wenn dieses Konto nicht standardmäßig eingestellt ist, können Sie mit dem Befehlszeilenargument -c
eine andere benannte Verbindung angeben, z. B.:
snow sql -q "SELECT 1" -c connection_name
Warehouse und Image-Repository erstellen¶
Um die benötigten Objekte zu erstellen, führen Sie entweder über Snowsight oder Snowflake CLI folgende Schritte aus.
Um den aktuellen Kontext in Snowsight so einzustellen, dass die Rolle
tutorial_role
verwendet wird, führen Sie den folgenden Befehl aus:USE ROLE tutorial_role;
Wenn Sie Snowflake CLI verwenden, können Sie stattdessen
--role tutorial_role
verwenden.Um ein Warehouse für die Snowflake Native App with Snowpark Container Services zu erstellen, führen Sie den folgenden Befehl aus:
CREATE OR REPLACE WAREHOUSE tutorial_warehouse WITH WAREHOUSE_SIZE = 'X-SMALL' AUTO_SUSPEND = 180 AUTO_RESUME = true INITIALLY_SUSPENDED = false;
Ein Warehouse wird von der Snowflake Native App benötigt, um SQL-Befehle und gespeicherte Prozeduren auszuführen.
Um das Image-Repository zu erstellen, das zum Speichern des Containers verwendet wird, führen Sie den folgenden Befehl aus:
CREATE DATABASE tutorial_image_database; CREATE SCHEMA tutorial_image_schema; CREATE IMAGE REPOSITORY tutorial_image_repo;
In diesem Abschnitt haben Sie ein Warehouse erstellt, das zum Ausführen von Abfragen für die von Ihnen erstellte App verwendet wird, sowie ein Image-Repository, das Container-Images hostet.
Im nächsten Abschnitt erstellen Sie ein Image für den Container und laden es in das zuvor erstellte Image-Repository hoch.
Image für einen Snowpark Container Services-Dienst erstellen¶
In diesem Abschnitt erstellen Sie ein Docker-Image und laden es in das Image-Repository hoch, das Sie im vorherigen Abschnitt erstellt haben.
Projektverzeichnis erstellen¶
Der Quellcode für Ihre App befindet sich im lokalen Dateisystem und kann auf Wunsch in die Versionskontrolle eingecheckt werden. Zuerst verwenden wir Snowflake CLI, um ein Native Apps-Projekt zu booten. Anschließend erstellen wir das Image für unseren Containerdienst in einem Unterordner.
Führen Sie auf Ihrem lokalen Dateisystem den folgenden Befehl aus, um einen Ordner mit dem Namen
na-spcs-tutorial
zu erstellen:snow init --template app_basic na-spcs-tutorial
Bemerkung
Sie werden in späteren Unterabschnitten weitere Dateien und Unterordner zu diesem Ordner hinzufügen und die von diesem Befehl erstellten Dateien bearbeiten.
Bemerkung
Führen Sie
snow init --help
aus, um weitere Vorlagen für das Einrichten einer Snowflake Native App-Entwicklungsumgebung anzuzeigen.Erstellen Sie innerhalb des Ordners
na-spcs-tutorial
einen Ordner mit dem Namenservice
. Dieser Ordner enthält den Quellcode für den Container-basierten Dienst, den wir erstellen und in Snowflake veröffentlichen werden.Um die für das Tutorial benötigten Docker-Dateien zu erhalten, laden Sie die ZIP-Datei in Ihr lokales Dateisystem herunter.
Entpacken Sie den Inhalt in den Ordner
na-spcs-tutorial/service
. Dieser Ordner sollte die folgenden Dateien enthalten:echo_service.py
Dockerfile
templates/basic_ui.html
echo_spec.yaml
Öffnen Sie ein Terminalfenster, und wechseln Sie in dieses Verzeichnis.
Docker-Image erstellen und in den Container hochladen¶
Um ein Docker-Image zu erstellen und es in das Image-Repository hochzuladen, gehen Sie wie folgt vor:
Führen Sie den folgenden Docker CLI-Befehl aus. Beachten Sie, dass Sie in dem Befehl das aktuelle Verzeichnis (.) angeben müssen:
docker build --rm --platform linux/amd64 -t my_echo_service_image:tutorial .
Dieser Befehl führt Folgendes aus:
Erstellt ein Docker-Image anhand der Docker-Datei, die in der heruntergeladenen ZIP-Datei enthalten ist.
Benennt das Image
my_echo_service_image
.Wendet das Tag
tutorial
auf das Image an.
Um die URL des Image-Repositorys zu identifizieren, das Sie in einem früheren Abschnitt erstellt haben, führen Sie den folgenden Befehl aus:
REPO_URL=$(snow spcs image-repository url tutorial_image_database.tutorial_image_schema.tutorial_image_repo --role tutorial_role) echo $REPO_URL
Die URL des Image-Repositorys wird in der Variable
$REPO_URL
erfasst und anschließend auf der Konsole ausgegeben. Sie benötigen diesen Wert im nächsten Schritt.Um ein Tag für das Image zu erstellen, das die Image-URL enthält, führen Sie den folgenden Docker CLI-Befehl aus:
docker tag <image_name> <image_url>/<image_name>
Dieser Befehl erfordert zwei Parameter:
<image_name>
gibt den Namen von Image und Tag an.<image_url>/<image_name>
gibt die URL des Image-Repositorys an, in das das Image hochgeladen wird, sowie den Image-Namen und das Tag, wo das Image im externen Repository gespeichert werden soll.
Verwenden Sie für dieses Tutorial
$REPO_URL
undmy_echo_service_image:tutorial
:docker tag my_echo_service_image:tutorial $REPO_URL/my_echo_service_image:tutorial
Um sich mit der Snowflake-Registry zu authentifizieren, führen Sie den folgenden Snowflake CLI-Befehl aus:
snow spcs image-registry login [-c connection_name]
Mit diesem Befehl werden die erforderlichen Anmeldeinformationen geladen, die Docker CLI benötigt, um die Image-Repositorys in Ihrem Snowflake-Konto zu verwenden. Wenn Sie nicht die Standardeinstellung verwenden, müssen Sie den Namen der Verbindung angeben.
Wenn alles erfolgreich war, wird die Meldung
Login Succeeded
angezeigt.Um das Docker-Image in das Image-Repository hochzuladen, führen Sie den folgenden
docker push
-Befehl aus:docker push $REPO_URL/<image_name>
Wenn Sie denselben Wert wie
<image_name>
aus den vorherigen Schritten verwenden, lautet dieser Befehl:docker push $REPO_URL/my_echo_service_image:tutorial
Bestätigen Sie, dass das Image erfolgreich hochgeladen wurde, indem Sie den folgenden Befehl ausführen:
snow spcs image-repository list-images tutorial_image_database.tutorial_image_schema.tutorial_image_repo --role tutorial_role
In diesem Abschnitt haben Sie ein Docker-Image erstellt, das den Echo-Dienst enthält, und dieses Image in das Image-Repository tutorial_repository
verschoben, das Sie zuvor in diesem Tutorial erstellt haben.
Im nächsten Abschnitt werden Sie ein Anwendungspaket erstellen, das dieses Image verwendet.
Snowflake Native App entwickeln¶
In diesem Abschnitt werden Sie die folgenden Dateien erstellen:
- Projektdefinitionsdatei
Eine YAML-Datei, die Informationen über die Snowflake-Objekte enthält, die Sie erstellen möchten. Diese Datei heißt
snowflake.yml
und wird von Snowflake CLI verwendet, um das Anwendungspaket und das Objekt in Ihrem Konto bereitzustellen.- Manifest-Datei
Eine YAML-Datei, die grundlegende Konfigurations- und Callback-Informationen zu der Anwendung enthält. Diese Datei heißt
manifest.yml
.- Setup-Skript
Ein SQL-Skript, das automatisch ausgeführt wird, wenn ein Verbraucher eine Anwendung in seinem Konto installiert. Sie können diese Datei nennen, wie Sie möchten, solange Ihre Manifest-Datei auf sie verweist.
Die erste Datei wird von Snowflake CLI verwendet, während die beiden anderen von Snowflake Native App Framework benötigt werden.
Sie werden im Laufe dieses Tutorials mehr über diese Dateien und deren Inhalt erfahren. Sie werden auch eine Readme-Datei erstellen, die bei der Anzeige und Veröffentlichung Ihrer Anwendung in späteren Abschnitten dieses Tutorials nützlich ist.
Manifest-Datei für das Anwendungspaket erstellen¶
Um die erforderliche Manifest-Datei für das Anwendungspaket zu erstellen, gehen Sie wie folgt vor:
Ändern Sie die Datei
na-spcs-tutorial/app/manifest.yml
so, dass sie Folgendes enthält:manifest_version: 1 artifacts: setup_script: setup_script.sql readme: README.md container_services: images: - /tutorial_image_database/tutorial_image_schema/tutorial_image_repo/my_echo_service_image:tutorial privileges: - BIND SERVICE ENDPOINT: description: "A service that can respond to requests from public endpoints." - CREATE COMPUTE POOL: description: "Permission to create compute pools for running services"
Dieses Beispiel enthält die folgenden Eigenschaften:
Die Eigenschaft
artifacts
gibt die Speicherorte der Ressourcen an, die von einer App mit Containern benötigt werden, einschließlich des Speicherorts des Docker-Images, das Sie in einem vorherigen Schritt erstellt haben, sowie die Projekt-README, die in Snowsight sichtbar sein wird.Die Eigenschaft
privileges
ermöglicht es einem Dienst, auf öffentliche Anforderungen zu antworten und seinen eigenen Computepool zu erstellen. Diese Eigenschaften werden für die Instanziierung unseres Dienstes im nächsten Schritt des Tutorials benötigt.
Setup-Skript für das Anwendungspaket erstellen¶
Um das erforderliche Setup-Skript für das Anwendungspaket zu erstellen, gehen Sie wie folgt vor:
Ändern Sie die Datei
na-spcs-tutorial/app/setup_script.sql
so, dass Sie Folgendes enthält:CREATE APPLICATION ROLE IF NOT EXISTS app_user; CREATE SCHEMA IF NOT EXISTS core; GRANT USAGE ON SCHEMA core TO APPLICATION ROLE app_user; CREATE OR ALTER VERSIONED SCHEMA app_public; GRANT USAGE ON SCHEMA app_public TO APPLICATION ROLE app_user; CREATE OR REPLACE PROCEDURE app_public.start_app() RETURNS string LANGUAGE sql AS $$ BEGIN -- account-level compute pool object prefixed with app name to prevent clashes LET pool_name := (SELECT CURRENT_DATABASE()) || '_compute_pool'; CREATE COMPUTE POOL IF NOT EXISTS IDENTIFIER(:pool_name) MIN_NODES = 1 MAX_NODES = 1 INSTANCE_FAMILY = CPU_X64_XS AUTO_RESUME = true; CREATE SERVICE IF NOT EXISTS core.echo_service IN COMPUTE POOL identifier(:pool_name) FROM spec='service/echo_spec.yaml'; CREATE OR REPLACE FUNCTION core.my_echo_udf (TEXT VARCHAR) RETURNS varchar SERVICE=core.echo_service ENDPOINT=echoendpoint AS '/echo'; GRANT USAGE ON FUNCTION core.my_echo_udf (varchar) TO APPLICATION ROLE app_user; RETURN 'Service successfully created'; END; $$; GRANT USAGE ON PROCEDURE app_public.start_app() TO APPLICATION ROLE app_user; CREATE OR REPLACE PROCEDURE app_public.service_status() RETURNS VARCHAR LANGUAGE SQL EXECUTE AS OWNER AS $$ DECLARE service_status VARCHAR; BEGIN CALL SYSTEM$GET_SERVICE_STATUS('core.echo_service') INTO :service_status; RETURN PARSE_JSON(:service_status)[0]['status']::VARCHAR; END; $$; GRANT USAGE ON PROCEDURE app_public.service_status() TO APPLICATION ROLE app_user;
Readme-Datei für das Anwendungspaket erstellen¶
Ändern Sie die Datei
na-spcs-tutorial/app/README.md
so, dass sie Folgendes enthält:Welcome to your first app with containers!
Diese Readme-Datei ist für Verbraucher sichtbar, die Ihre App installiert haben.
Projektdefinitionsdatei erstellen¶
In diesem Abschnitt erstellen Sie die Projektdefinitionsdatei, die von Snowflake CLI benötigt wird.
Ändern Sie die Datei
na-spcs-tutorial/snowflake.yml
so, dass sie Folgendes enthält:definition_version: 2 entities: na_spcs_tutorial_pkg: type: application package manifest: app/manifest.yml artifacts: - src: app/* dest: ./ - service/echo_spec.yaml meta: role: tutorial_role warehouse: tutorial_warehouse na_spcs_tutorial_app: type: application from: target: na_spcs_tutorial_pkg debug: false meta: role: tutorial_role warehouse: tutorial_warehouse
In diesem Abschnitt haben Sie eine lokale Dateistruktur definiert, die einem Snowflake-Konto als Snowflake Native App with Snowpark Container Services bereitgestellt werden kann. Im nächsten Abschnitt werden Sie diese Bereitstellung mit Snowflake CLI ausführen.
App erstellen und testen¶
Nachdem Sie die Manifest-Datei, das Setup-Skript und die Dienstspezifikation für Ihre Snowflake Native App with Snowpark Container Services definiert haben, können Sie die App testen, indem Sie sie mit Snowflake CLI auf Ihrem Konto bereitstellen.
Anwendung bereitstellen¶
Um die Anwendung im Modus der Stagingbereichsentwicklung bereitzustellen, gehen Sie wie folgt vor:
Erstellen Sie das Anwendungspaket und das Objekt in Ihrem Konto, indem Sie den folgenden Befehl im Ordner
na-spcs-tutorial
ausführen:snow app run [-c connection_name]
Dieser Befehl zeigt eine Bestätigung an, dass ein Anwendungspaket namens
na_spcs_tutorial_pkg
und ein Anwendungsobjekt namensna_spcs_tutorial_app
in Ihrem Konto erstellt wurden. Diese Namen entsprechen den Namen in der Projektdefinitionsdateisnowflake.yml
, die Sie in einem vorherigen Abschnitt erstellt haben.
Sie können die URL-Ausgabe auf der Konsole verwenden, um die Anwendung anzuzeigen. Sie müssen jedoch zunächst sicherstellen, dass die Anwendung über alle erforderlichen Berechtigungen verfügt, um ihren containerbasierten Dienst zu erstellen.
Dies werden Sie im nächsten Abschnitt tun.
Berechtigungen erteilen und App testen¶
In diesem Abschnitt erteilen Sie der App die erforderlichen Berechtigungen und testen die App, indem Sie die Dienste im Container aufrufen.
Sie können die SQL-Befehle entweder über Snowsight oder Snowflake CLI ausführen.
Um die Berechtigungen zu erteilen und die App zu testen, führen Sie die folgenden Schritte aus.
Bemerkung
Für die Ausführung in Snowflake CLI verwenden Sie die folgende Syntax:
snow sql -q "<sql>" --role tutorial_role --warehouse tutorial_warehouseWie in den vorherigen Schritten können Sie
-c connection_name
hinzufügen, um eine nicht standardmäßige Verbindung zu wählen.
Erteilen Sie der App die Berechtigung
CREATE COMPUTE POOL
, indem Sie Folgendes ausführen:grant create compute pool on account to application na_spcs_tutorial_app; grant bind service endpoint on account to application na_spcs_tutorial_app;
Führen Sie die Prozedur
app_public.start_app
aus, die wir in der Dateisetup_script.sql
definiert haben.CALL na_spcs_tutorial_app.app_public.start_app();
Diese Prozedur erstellt den Computepool, instanziiert den Dienst und erstellt die Dienstfunktion.
Bestätigen Sie, dass die Funktion erstellt wurde, indem Sie Folgendes ausführen:
SHOW FUNCTIONS LIKE '%my_echo_udf%' IN APPLICATION na_spcs_tutorial_app;
Bemerkung
Verbraucher können den aktivierten Dienst nicht sehen, da er als Teil der Snowflake Native App ausgeführt wird. Wenn Sie zum Beispiel
SHOW SERVICES IN APPLICATION na_spcs_tutorial_app;
ausführen, ist das Ergebnis leer.Um zu überprüfen, ob der Dienst erstellt wurde und funktioniert, führen Sie den folgenden Befehl aus:
CALL na_spcs_tutorial_app.app_public.service_status();
Dieser Befehl ruft die Prozedur
app_public.service_status
auf, die Sie im Setup-Skript definiert haben:Wenn diese Prozedur
READY
zurückgibt, fahren Sie mit dem nächsten Schritt fort.Um die Dienstfunktion aufzurufen, um eine Anfrage an den Dienst zu senden und die Antwort zu überprüfen, führen Sie den folgenden Befehl aus:
SELECT na_spcs_tutorial_app.core.my_echo_udf('hello');
Es wird eine Meldung von dem Dienst angezeigt, den wir in einem früheren Abschnitt hochgeladen haben:
Bob said hello
.
App und Objekte beseitigen, die im Tutorial erstellt wurden¶
Da die App einen Computepool verwendet, werden Credits von Ihrem Konto genutzt, sodass die Ausführung Geld kostet. Um die App daran zu hindern, Ressourcen zu verbrauchen, müssen Sie das Anwendungsobjekt zusammen mit allen von ihm erstellten Objekten auf Kontoebene (wie unseren COMPUTE POOL
) wieder beseitigen.
Um zu überprüfen, ob der Computepool derzeit ausgeführt wird, führen Sie den folgenden Befehl aus:
snow object list compute-pool -l "na_spcs_tutorial_app_%"
Es sollte eine Zeile für einen Computepool mit dem Status
ACTIVE
angezeigt werden, der von dem Anwendungsobjekt erstellt wurde.Führen Sie den folgenden Snowflake CLI-Befehl aus, um die App zu beseitigen:
snow app teardown --cascade [-c connection_name]
Bemerkung
Die Option
CASCADE
entfernt alle zugehörigen Objekte auf Kontoebene, die der App gehören, bevor diese gelöscht wird. Diese Option erfordert Snowflake CLI 2.4.0 oder höher.Führen Sie den Befehl
snow object list
erneut aus, um zu bestätigen, dass der Computepool gelöscht wurde.
Bemerkung
Der Befehl snow app teardown
löscht sowohl das Anwendungspaket als auch das Anwendungsobjekt, sodass alle zustandsabhängigen Daten verloren gehen.
Mehr erfahren¶
Herzlichen Glückwunsch! Sie haben nicht nur dieses Tutorial abgeschlossen, sondern auch den Lebenszyklus von Entwicklung und Veröffentlichung einer Snowflake Native App with Snowpark Container Services durchlaufen.
Auf dem Weg dorthin, haben Sie folgende Aufgaben ausgeführt:
Verwenden von Snowsight und Snowflake CLI, um eine Anwendung mit Snowflake Native App Framework zu erstellen.
Weitere Informationen zur Konfiguration der von Snowflake CLI verwendeten Konnektivität finden Sie unter Konfiguration von Snowflake CLI und Verbindung zu Snowflake.
Weitere Informationen zu Snowsight finden Sie unter Erste Schritte mit Arbeitsblättern und Mit Arbeitsblättern in Snowsight arbeiten.
Weitere Informationen zu Native Apps in Snowflake CLI finden Sie unter Verwenden von Snowflake Native App mit Snowflake CLI.
Erstellen des Manifests und des Setup-Skripts, die von allen Anwendungen benötigt werden
Weitere Informationen dazu finden Sie unter Manifest-Datei für ein Anwendungspaket erstellen und Setup-Skript erstellen.
Erstellen eines Anwendungspakets, das als Container für die Anwendungslogik und den Dateninhalt Ihrer Anwendung dient
Weitere Informationen dazu finden Sie unter Anwendungspaket erstellen.
Verwenden von Docker CLI und Snowflake CLI, um einen Container zu erstellen und in Snowflake hochzuladen.
Verwenden der Snowpark Container Services, um einen Container
COMPUTE POOL
zu erstellen und den Container innerhalb einer Snowflake Native App zu instanziieren.