snow app run¶
Erstellt ein Anwendungspaket in Ihrem Snowflake-Konto, lädt Codedateien in den zugehörigen Stagingbereich hoch und erstellt oder aktualisiert dann ein Anwendungsobjekt aus dem Anwendungspaket.
Syntax¶
snow app run
--version <version>
--patch <patch>
--from-release-directive
--channel <channel>
--interactive / --no-interactive
--force
--validate / --no-validate
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--connection <connection>
--host <host>
--port <port>
--account <account>
--user <user>
--password <password>
--authenticator <authenticator>
--workload-identity-provider <workload_identity_provider>
--private-key-file <private_key_file>
--token <token>
--token-file-path <token_file_path>
--database <database>
--schema <schema>
--role <role>
--warehouse <warehouse>
--temporary-connection
--mfa-passcode <mfa_passcode>
--enable-diag
--diag-log-path <diag_log_path>
--diag-allowlist-path <diag_allowlist_path>
--oauth-client-id <oauth_client_id>
--oauth-client-secret <oauth_client_secret>
--oauth-authorization-url <oauth_authorization_url>
--oauth-token-request-url <oauth_token_request_url>
--oauth-redirect-uri <oauth_redirect_uri>
--oauth-scope <oauth_scope>
--oauth-disable-pkce
--oauth-enable-refresh-tokens
--oauth-enable-single-use-refresh-tokens
--client-store-temporary-credential
--format <format>
--verbose
--debug
--silent
--enhanced-exit-codes
Argumente¶
Keine
Optionen¶
--version TEXTDie in einem vorhandenen Anwendungspaket definierte Version, aus der Sie ein Anwendungsobjekt erstellen möchten. Die Namen der Anwendungsobjekte und Anwendungspakete werden aus der Projektdefinitionsdatei ermittelt.
--patch INTEGERDie Nummer des Patches unter der angegebenen
--versionin einem vorhandenen Paket, das zur Erstellung eines Anwendungsobjekts verwendet werden soll. Die Namen der Anwendungsobjekte und Anwendungspakete werden aus der Projektdefinitionsdatei ermittelt.--from-release-directiveErstellt oder aktualisiert ein Anwendungsobjekt auf die Version und den Patch, die in der für Ihr Snowflake-Konto geltenden Release-Richtlinie angegeben sind. Der Befehl schlägt fehl, wenn für Ihr Snowflake-Konto keine Release-Richtlinie für ein bestimmtes Anwendungspaket existiert, was anhand der Projektdefinitionsdatei ermittelt wird. Standard: nicht aktiviert. Standard: false
--channel TEXTDer Name des Release-Kanals, der beim Erstellen oder Aktualisieren einer Anwendungsinstanz aus einer Release-Richtlinie verwendet werden soll. Erfordert, dass das Kennzeichen
--from-release-directivegesetzt ist. Wenn nicht gesetzt, wird der Standardkanal verwendet.--interactive / --no-interactiveWenn diese Option aktiviert ist, werden Eingabeaufforderungen auch dann angezeigt, wenn die Standardeingabe und -ausgabe keine Terminalgeräte sind. In einer interaktiven Shell-Umgebung ist der Standardwert True, andernfalls False.
--forceWenn diese Option aktiviert ist, genehmigt der Befehl implizit jede Eingabeaufforderung, die auftaucht. Sie sollten diese Option aktivieren, wenn der interaktive Modus nicht angegeben ist und wenn Sie potenziell destruktive Aktionen ausführen möchten. Standard: nicht aktiviert. Standard: false
--validate / --no-validateWenn diese Option aktiviert ist, triggert sie die Validierung des Setup-Skripts einer bereitgestellten Snowflake Native App SQL. Standard: True.
--package-entity-id TEXTDie ID der Paketentität, mit der gearbeitet werden soll, wenn definition_version 2 oder höher ist.
--app-entity-id TEXTDie ID der Anwendungsentität, mit der gearbeitet werden soll, wenn die definition_version 2 oder höher ist.
-p, --project TEXTPfad, unter dem das Snowflake-Projekt gespeichert ist. Standardmäßig wird das aktuelle Verzeichnis als Arbeitsverzeichnis verwendet.
--env TEXTZeichenfolge im Format Schlüssel=Wert. Überschreibt die Variablen aus dem Abschnitt env, die für Vorlagen verwendet werden. Standard: [].
--connection, -c, --environment TEXTName der Verbindung, wie in Ihrer
config.toml-Datei definiert. Standard:Standard.--host TEXTHost-Adresse für die Verbindung. Überschreibt den für die Verbindung angegebenen Wert.
--port INTEGERPort für die Verbindung. Überschreibt den für die Verbindung angegebenen Wert.
--account, --accountname TEXTName, der Ihrem Snowflake-Konto zugewiesen wurde. Überschreibt den für die Verbindung angegebenen Wert.
--user, --username TEXTBenutzername für die Verbindung zu Snowflake. Überschreibt den für die Verbindung angegebenen Wert.
--password TEXTSnowflake-Kennwort. Überschreibt den für die Verbindung angegebenen Wert.
--authenticator TEXTSnowflake-Authentifikator. Überschreibt den für die Verbindung angegebenen Wert.
--workload-identity-provider TEXTWorkload-Identitätsanbieter (AWS, AZURE, GCP, OIDC). Überschreibt den für die Verbindung angegebenen Wert.
--private-key-file, --private-key-path TEXTDateipfad zum privaten Snowflake-Schlüssel. Überschreibt den für die Verbindung angegebenen Wert.
--token TEXTOAuth-Token, das bei der Verbindung mit Snowflake verwendet werden soll.
--token-file-path TEXTPfad zur Datei mit einem OAuth-Token, das bei der Verbindung mit Snowflake verwendet werden soll.
--database, --dbname TEXTZu verwendende Datenbank. Überschreibt den für die Verbindung angegebenen Wert.
--schema, --schemaname TEXTZu verwendendes Datenbankschema. Überschreibt den für die Verbindung angegebenen Wert.
--role, --rolename TEXTZu verwendende Rolle. Überschreibt den für die Verbindung angegebenen Wert.
--warehouse TEXTZu verwendendes Warehouse. Überschreibt den für die Verbindung angegebenen Wert.
--temporary-connection, -xVerwendet eine mit Befehlszeilenparametern definierte Verbindung anstelle einer in config definierten. Standard: false
--mfa-passcode TEXTFür die mehrstufige Authentifizierung (MFA) zu verwendendes Token.
--enable-diagOb ein Verbindungsdiagnosebericht erstellt werden soll. Standard: false
--diag-log-path TEXTPfad für den generierten Bericht. Standardmäßig wird das temporäre Verzeichnis des Systems verwendet. Standard: <system_temporary_directory>.
--diag-allowlist-path TEXTPfad zu einer JSON-Datei, die allowlist-Parameter enthält.
--oauth-client-id TEXTWert der Client-ID, die vom Identitätsanbieter für die Snowflake-Integration bereitgestellt wird.
--oauth-client-secret TEXTWert des Client-Geheimnisses, das vom Identitätsanbieter für die Snowflake-Integration bereitgestellt wird.
--oauth-authorization-url TEXTEndpunkt des Identitätsanbieters, der den Autorisierungscode an den Treiber liefert.
--oauth-token-request-url TEXTEndpunkt des Identitätsanbieters, der die Zugriffstoken für den Treiber bereitstellt.
--oauth-redirect-uri TEXTFür die Umleitung des Autorisierungscodes zu verwendende URI.
--oauth-scope TEXTBereich, der in der Autorisierungsanfrage des Identitätsanbieters angefordert wird.
--oauth-disable-pkceDeaktiviert den Proof Key For Code Exchange (PKCE). Standard:
False.--oauth-enable-refresh-tokensErmöglicht eine stille Neuauthentifizierung, wenn das aktuelle Zugriffstoken veraltet ist. Standard:
False.--oauth-enable-single-use-refresh-tokensOb Sie sich für die Semantik des einmaligen Aktualisierungs-Tokens entscheiden. Standard:
False.--client-store-temporary-credentialSpeichern der temporären Anmeldeinformationen.
--format [TABLE|JSON|JSON_EXT|CSV]Gibt das Ausgabeformat an. Standard: TABLE.
--verbose, -vZeigt Protokolleinträge für die Protokolliergrade
infound höher an. Standard: false--debugZeigt Protokolleinträge für die Protokollebenen
debugund höher an; Debug-Protokolle enthalten zusätzliche Informationen. Standard: false--silentSchaltet Zwischenausgaben auf der Konsole aus. Standard: false
--enhanced-exit-codesExit-Fehlercodes nach Art des Fehlers unterscheiden. Standard: false
--helpZeigt den Hilfetext für diesen Befehl an.
Nutzungshinweise¶
Bemerkung
Dieser Befehl akzeptiert keine Rollen- oder Warehouse-Überschreibungen in Ihrer config.toml-Datei. Fügen Sie sie stattdessen der Native App-Definition in snowflake.yml oder snowflake.local.yml hinzu.
Dieser Befehl stützt sich auf die aufgelöste Projektdefinition, um den Stagingbereich, in den die Dateien hochgeladen werden sollen, die hochzuladenden Dateien und den Namen der zu erstellenden Objekte zu bestimmen. Hinweise zu den Standardeinstellungen finden Sie in den Nutzungshinweisen Allgemeine Informationen zu Snowflake Native App-Projekten und snow init. Sie können sie auch nach Ihren eigenen Vorstellungen ändern. Es liegt jedoch in Ihrer Verantwortung zu prüfen, ob es zu Konflikten mit bestehenden Objekten in Ihrem Konto kommt.
Die von Snowflake CLI erstellten Objekte sind mit einem speziellen Kommentar
GENERATED_BY_SNOWCLIgetaggt.Die Rollen, die zum Erstellen des Anwendungspakets und der Instanz verwendet werden, müssen über die entsprechenden Berechtigungen auf Kontoebene verfügen, um mit Snowflake Native Apps arbeiten zu können. Weitere Informationen dazu finden Sie unter Anwendungspaket erstellen und Eine App lokal installieren und testen.
Standardmäßig erstellt der snow app run-Befehl ein Anwendungspaket in Ihrem Snowflake-Konto, lädt Codedateien in seinen Stagingbereich hoch, validiert das Setup-Skript SQL und erstellt (oder aktualisiert) dann eine Instanz dieser Anwendung im Entwicklungsmodus. Beachten Sie beim Ausführen des Standardbefehls Folgendes:
Alle Dateien, die in den Projektdefinitionsdateien unter
nativeapp.project.artifactsangegeben sind, werden in den Snowflake-Stagingbereich hochgeladen. Dieses Artefakt muss einemanifest.yml-Datei und zugehörige Setup-Skripte enthalten.Alle unter
nativeapp.project.artifactsangegebenen Dateien müssen vor dem Aufrufen vonsnow app runbereits kompiliert und ggf. separat gepackt worden sein. Snowflake CLI bietet kein Feature, um diese Zwischenaufgaben für Sie auszuführen, sodass Sie die volle Kontrolle über Ihren Build-Prozess haben, indem Sie ihn in Ihren eigenen Skripten ausführen.Snowflake CLI verwendet beim Erstellen dieser Objekte den Standardnamen des Anwendungspakets, den Namen des Stagingbereichs und den Anwendungsnamen.
Die Ausführungsläufe nach dem ersten Ausführungslauf von
snow app runvergleichen den Zustand der hochgeladenen Dateien mit den Dateien in Ihrem lokalen Verzeichnis und laden selektiv nur die geänderten Dateien hoch, um Zeit zu sparen. Wenn sich Dateien geändert haben, wird die Anwendung auf der Grundlage der neuen Inhalte des Stagingbereichs aktualisiert.Wenn das Anwendungspaket bereits existiert und seine Verteilungseigenschaft
INTERNALlautet, prüft der Befehl, ob das Paket von Snowflake CLI erstellt wurde. Wenn dies nicht der Fall ist, gibt der Befehl einen Fehler aus. Wenn die Verteilung des AnwendungspaketsEXTERNAList, wird keine solche Prüfung ausgeführt.Der Befehl warnt Sie zwar, wenn das verwendete Anwendungspaket einen anderen Wert für die Verteilung hat, als in Ihrer aufgelösten Projektdefinition festgelegt ist, setzt aber die Ausführung fort.
Die Anwendungsinstanz wird im Entwicklungsmodus erstellt oder aktualisiert. Genauer gesagt verwendet sie die Stagingdateien.
Wenn Sie die Option --version, --patch oder --from-release-directive angeben, aktualisiert dieser Befehl Ihre vorhandene Anwendungsinstanz oder erstellt eine, wenn die Anwendung noch nicht existiert. In diesem Szenario wird kein Anwendungspaket erstellt.
Wenn Snowflake CLI aus irgendeinem Grund nicht in der Lage ist, Ihre Anwendung zu aktualisieren, z. B. wenn Sie versuchen, eine Anwendung, die ursprünglich im Lose-Dateien-Modus installiert wurde, nun mit einer Release-Richtlinien zu aktualisieren, dann wird versucht, die vorhandene Anwendung zu löschen und eine neue Anwendung mit der gewünschten Installationsstrategie zu erstellen. Der Befehl fordert Sie auf, das Löschen zu bestätigen, bevor Sie die Aktion ausführen.
Wenn Sie nicht mit dem Befehl interagieren und stattdessen alle Aktionen erzwingen möchten, verwenden Sie die Option
--force, um alle Aufforderungen zu umgehen, was ein „Ja“ auf alle Eingaben bedeutet, die danach fragen, ob mit destruktiven Aktionen fortgefahren werden soll.Snowflake CLI versucht zu ermitteln, ob Sie die Befehle in einer interaktiven Shell ausführen. Wenn
--forcenicht angegeben ist und Sie Befehle in der interaktiven Shell ausführen, wird automatisch die interaktive Option verwendet.Wenn Sie Snowflake CLI zwingen möchten, mit Ihnen zu interagieren, auch wenn Sie sich nicht in einer interaktiven Shell befinden, verwenden Sie die Option
--interactive.
Beispiele¶
Bei diesen Beispielen wird davon ausgegangen, dass Sie die erforderlichen Änderungen an Ihren Codedateien vorgenommen und sie zu Ihrer snowflake.yml- oder snowflake.local.yml-Dateien hinzugefügt haben.
Wenn Sie ein Anwendungspaket und eine Anwendung mit Stagingdateien erstellen möchten, können Sie Folgendes ausführen:
cd my_app_project my_app_project_build_script.sh snow app run --connection="dev"
Wenn Sie bereits über ein Anwendungspaket mit einer Version und einem Patch verfügen, aus dieser Version und dem Patch eine Anwendung erstellen möchten und den interaktiven Modus aufrufen möchten, können Sie Folgendes ausführen:
snow app run --version V1 --patch 12 --interactive --connection="dev"
Hier werden die Version
V1und der Patch12nur als Beispiel verwendet.Wenn Sie eine bestehende Release-Richtlinie auf ein Anwendungspaket gesetzt haben, daraus eine Anwendung erstellen und den interaktiven Modus umgehen möchten, können Sie Folgendes ausführen:
snow app run --from-release-directive --force --connection="dev"
Um eine Anwendung aus der Release-Richtlinie eines nicht standardmäßigen Release-Kanals zu erstellen, führen Sie Folgendes aus:
snow app run --from-release-directive --channel ALPHA --connection="dev"
Dieses Beispiel zeigt, wie Sie mehrere Variablen der Umgebung mit der
--env-Option übergeben können:snow app run --env source_folder="src/app" --env stage_name=mystage