Aktualisierung und Upgrade einer Snowflake Native App

Das Snowflake Native App Framework ermöglicht es Anbietern, eine Snowflake Native App zu aktualisieren, um neue Funktionen hinzuzufügen, Fehler zu beheben und andere Änderungen vorzunehmen. Unter diesem Thema wird beschrieben, wie Sie Versionen und Patches zu einem Anwendungspaket hinzufügen. Zudem wird beschrieben, wie installierte Instanzen einer Snowflake Native App aktualisiert werden können.

Allgemeine Informationen zu Versionen und Patches

Im Kontext des Snowflake Native App Framework beziehen sich die Begriffe „Version“ und „Patch“ auf Folgendes:

Version

Enthält im Allgemeinen größere Aktualisierungen für eine Snowflake Native App. Versionen werden in einem Anwendungspaket definiert. Ein Anwendungspaket kann nur zwei aktive Versionen gleichzeitig haben. Um eine neue Version zu einem Anwendungspaket hinzuzufügen, für das bereits zwei Versionen definiert sind, müssen Sie zunächst eine der Versionen löschen.

Patch

Enthält im Allgemeinen kleinere Aktualisierungen für eine Snowflake Native App. Wie Versionen werden auch Patches im Anwendungspaket definiert. Obwohl ein Anwendungspaket nur zwei aktive Versionen gleichzeitig enthalten kann, kann eine einzelne Version mehrere Patches enthalten.

Bemerkung

Eine einzelne Version kann bis zu 130 Patches haben.

Wenn ein Anbieter eine neue Version zu einem Anwendungspaket hinzufügt, wird der neuen Version automatisch Patch 0 zugewiesen. Wenn ein Anbieter einen neuen Patch zu einer Version hinzufügt, kann er die Patchnummer manuell angeben. Wenn keine Patchnummer angegeben wird, erhöht Snowflake die Patchversion automatisch um 1.

Nach dem Hinzufügen einer Version oder eines Patches zu einem Anwendungspaket können Sie die Änderungen lokal testen, indem Sie ein auf der Version oder dem Patch basierendes Anwendungsobjekt erstellen. Weitere Informationen dazu finden Sie unter Anwendungsobjekt aus einer Version oder einem Patch-Level erstellen.

Bemerkung

Alle in einem Anwendungspaket definierten Versionen und Patches müssen ihre eigene Version des Setup-Skripts und der Anwendungsdateien haben.

Unterschiede zwischen Versionen und Patches

Wenn ein Anbieter eine neue Version einer Anwendung veröffentlicht, sorgt das Snowflake Native App Framework dafür, dass nur die vorherige Version der App aktiv ist. Wenn ein Anbieter beispielsweise V1 und V2 einer App veröffentlicht hat, stellt Snowflake Native App Framework sicher, dass nur V2 in einem Kundenkonto installiert ist, bevor ein Upgrade auf V3 erfolgt. Dadurch wird sichergestellt, dass das Setup-Skript nur die Unterschiede zwischen V2 und V3 berücksichtigen muss. Mit anderen Worten: Das Setup-Skript ist nur mit der neuesten Version der App abwärtskompatibel. Wenn ein Anbieter eine Statusänderung an der App vornimmt, z. B. das Erstellen einer neuen Tabelle oder das Hinzufügen von Spalten zu einer Tabelle, gibt es keine Kompatibilitätsprobleme zwischen den Versionen.

Wenn hingegen ein Anbieter einen neuen Patch für eine Version einer App veröffentlicht, setzt das Snowflake Native App Framework keine Beschränkungen hinsichtlich der Anzahl der aktiven Patches durch. Anbieter müssen vermeiden, in einem Patch Änderungen am Status einer App vorzunehmen.

Allgemeine Informationen zu Release-Richtlinien

Eine Release-Richtlinie gibt die Version und optional den Patch an, der verwendet wird, wenn ein Verbraucher eine Snowflake Native App installiert. Release-Richtlinien werden auch verwendet, um ein automatisches Upgrade über alle installierten Instanzen einer bestimmten Version oder eines Patches auszulösen.

Release-Richtlinien werden im Anwendungspaket definiert. Es gibt zwei Typen von Release-Richtlinien:

Kundenspezifische Release-Richtlinie

Der Anbieter kann festlegen, welche Version einer Anwendung von bestimmten Snowflake-Konten installiert wird. Weitere Informationen dazu finden Sie unter Hinzufügen einer kundenspezifischen Release-Richtlinie.

Standard-Release-Richtlinie

Gibt die Version und den Patch an, die bei der Installation einer Snowflake Native App für alle Verbraucher gelten. Wenn ein Anbieter die Versionen V1 und V2 einer Anwendung erstellt, kann durch Festlegen von V2 in der Standard-Release-Richtlinie sichergestellt werden, dass ein Verbraucher bei der Installation der Snowflake Native App die Version V2 installiert. Weitere Informationen dazu finden Sie unter Standard-Release-Richtlinie festlegen.

Wenn ein Anbieter beispielsweise von einer Anwendung eine Version V2 und eine Version V3 erstellt hat, können Sie V2 als Standard-Release festlegen, und dann können Sie über eine kundenspezifische Release-Richtlinie festlegen, dass bei bestimmten Konten V3 freigegeben wird. Ein Anbieter kann auch die Version V3 der Anwendung vor deren Veröffentlichung erst einmal nur für ein Testkonto freigeben.

Bemerkung

Wenn Sie sowohl eine Standard- als auch eine kundenspezifische Release-Richtlinie angeben, hat die kundenspezifische Release-Richtlinie immer Vorrang. Im obigen Beispiel können Verbraucherkonten, die in der kundenspezifischen Release-Richtlinie angegeben sind, nur Version V3 der Anwendung installieren.

Sie müssen erst eine Release-Richtlinie in einem Anwendungspaket definieren, bevor Sie folgende Aufgaben ausführen können:

  • Erstellen eines öffentlichen Freigabeangebots mit dem Anwendungspaket als Dateninhalt

  • Installieren einer Snowflake Native App in einem Verbraucherkonto

Allgemeine Informationen zu Upgrades

Im Kontext des Snowflake Native App Framework sind Upgrades Aktualisierungen einer Version oder eines Patches einer Snowflake Native App, die im Verbraucherkonto installiert ist. Das Snowflake Native App Framework unterstützt zwei Typen von Upgrades:

Automatisierte Upgrades

Automatisierte Upgrades sind Upgrades, die vom Anbieter initiiert werden. Wenn eine neue Version oder ein neuer Patch verfügbar ist, ändert der Anbieter die Release-Richtlinie des Anwendungspakets. Dies löst ein automatisches Upgrade aller installierten Instanzen der Anwendung aus, die in der Release-Richtlinie angegeben ist.

Manuelle Upgrades

Manuelle Upgrades sind Upgrades, die vom Verbraucher als Reaktion auf eine Mitteilung vom Anbieter initiiert werden. Manuelle Upgrades sind nützlich, wenn ein Anbieter schnell eine Aktualisierung, z. B. eine Fehlerbehebung, für einen Kunden freigeben muss.

Wenn eine neue Version oder ein neuer Patch verfügbar ist, ändert der Anbieter die Release-Richtlinie des Anwendungspakets und benachrichtigt dann den Verbraucher, dass eine neue Version verfügbar ist. Der Verbraucher führt dann das Upgrade durch Ausführen des Befehls ALTER APPLICATION durch. Im Allgemeinen können Verbraucher mit manuellen Upgrades ihre installierten Apps schneller aktualisieren als mit automatischen Upgrades.

Weitere Informationen zum Workflow für das Durchführen eines Upgrades finden Sie unter Upgrade einer Snowflake Native App.

Allgemeine Informationen zu regionsübergreifenden Upgrades

Informationen zum Aktualisieren einer installierten App in verschiedenen Regionen finden Sie unter Regionsübergreifendes Upgrade einer installierten App.

Version oder Patch zu einem Anwendungspaket hinzufügen

Die Versionsinformationen für eine Anwendung werden im Anwendungspaket angegeben.

Erforderliche Berechtigungen zum Hinzufügen oder Entfernen von Versionen und Patches

Um eine Version oder einen Patch für ein Anwendungspaket anzugeben, müssen Ihrer Rolle Sie folgende Berechtigungen für das Anwendungspaket erteilt worden sein:

  • OWNERSHIP

  • MANAGE VERSIONS

Um beispielsweise der Rolle release_mgr die Berechtigung MANAGE VERSION für das Anwendungspaket zuzuweisen, verwenden Sie den Befehl GRANT <Berechtigungen> wie im folgenden Beispiel gezeigt:

GRANT MANAGE VERSIONS ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE release_mgr;
Copy

Eine Version mit SQL zu einem Anwendungspaket hinzufügen

Das folgende Beispiel zeigt, wie Sie den Befehl ALTER APPLICATION PACKAGE verwenden, um einem Anwendungspaket eine Version hinzuzufügen.

ALTER APPLICATION PACKAGE MyAppPackage
  ADD VERSION v1_0
  USING '@dev_stage/v1_0'
  LABEL = 'MyApp Version 1.0';
Copy

In diesem Beispiel ist v1_0 ein Bezeichner für die Version, die für den Verbraucher bei der Installation der Anwendung nicht sichtbar ist. Der Verbraucher sieht die Versionsinformationen, die in der Klausel LABEL-Klausel definiert sind.

Es können nur zwei Versionen einer Anwendung gleichzeitig existieren. Wenn Sie zum Beispiel v1_0 und v1_1 in einer Anwendung definiert haben, müssen Sie v1_0 löschen, um v1_2 erstellen zu können. Sie können jedoch mehrere Patches für eine einzige Version haben.

Sie können den Versionsnamen und die Bezeichnung in der Datei manifest.yml definieren, oder Sie geben diese Informationen direkt mit dem Befehl ALTER APPLICATION PACKAGE an. Wenn Sie die Informationen sowohl in der Datei manifest.yml als auch mit dem SQL-Befehl definieren, haben die im SQL-Befehl angegebenen Werte Vorrang vor den in der manifest.yml-Datei angegebenen Werten.

Ein Patch mit SQL zu einem Anwendungspaket hinzufügen

Neben dem Erstellen von Versionen für eine App können Sie auch Patches für eine bestimmte Version erstellen. Wie die Versionen haben auch die App-Patches ihre eigenen Anwendungsdateien.

Um einen neuen Patch für ein Anwendungspaket zu erstellen, verwenden Sie im Befehl ALTER APPLICATION PACKAGE … VERSION die Klausel ADD PATCH FOR VERSION, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE MyAppPackage
 ADD PATCH FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

In diesem Beispiel wird der Klausel ADD PATCH FOR VERSION V1_0 keine Patchnummer bereitgestellt. Snowflake wird daher die Patchnummer automatisch um 1 erhöhen.

Um einen neuen Patch für eine Anwendung mit kundenspezifischer Patchnummer zu erstellen, verwenden Sie im Befehl ALTER APPLICATION PACKAGE … VERSION die Klausel ADD PATCH FOR VERSION, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE MyAppPackage
 ADD PATCH 3
 FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

Versionen und Patches für ein Anwendungspaket anzeigen

Als Anbieter können Sie die für eine Anwendung definierten Versionen und Patches anzeigen, indem Sie den Befehl SHOW VERSIONS auf dem Anwendungspaket ausführen.

Mit dem folgenden Befehl werden die Versionen und Patches angezeigt, die für ein Anwendungspaket namens hello_snowflake_package definiert wurden:

SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Copy

Version aus einem Anwendungspaket entfernen

Um eine Version aus einem Anwendungspaket zu entfernen, müssen Sie sicherstellen, dass es derzeit keine Release-Richtlinien gibt, die auf die Version verweisen, die Sie entfernen möchten.

Um die Release-Richtlinien anzuzeigen, die in einem Anwendungspaket angegeben sind, führen Sie den Befehl SHOW RELEASE DIRECTIVES aus, wie im folgenden Beispiel gezeigt:

SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE hello_snowflake_package;
Copy

Um eine Version aus einem Anwendungspaket zu entfernen, verwenden Sie im Befehl ALTER APPLICATION PACKAGE die Klausel DROP VERSION, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE hello_snowflake_package
  DROP VERSION v1_0;
Copy

Nach Ausführung dieses Befehls wird die Version erst dann gelöscht, wenn alle installierten Instanzen der App gelöscht wurden. Um den Status des Löschbefehls zu überprüfen, verwenden Sie den Befehl SHOW VERSIONS wie im folgenden Beispiel gezeigt:

SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Copy

Die Spalte dropped_on enthält den Zeitstempel für den Zeitpunkt, zu dem das Löschen initiiert wurde.

Bemerkung

Die gelöschte Version wird in der Ausgabe dieses Befehl nur dann angezeigt, wenn der Status DROPPED ist. Wenn alle installierten Instanzen der App gelöscht wurden, wird die gelöschte Version nicht mehr angezeigt.

Wenn eine Version gelöscht wird, können Verbraucher keine neuen Instanzen dieser Version der App mehr installieren.

Je nachdem, wie die Anwendung für die Verbraucher veröffentlicht wurde, kann es unterschiedlich lange dauern, bis die Version gelöscht ist:

  • Wenn das Anwendungspaket noch nicht für die Verbraucher veröffentlicht wurde, wird die Version sofort gelöscht.

  • Wenn das Anwendungspaket als öffentliches oder privates Freigabeangebot in einer einzigen Region veröffentlicht wurde, wird die Version sofort gelöscht.

  • Wenn das Anwendungspaket als Datenprodukt eines Freigabeangebots veröffentlicht wurde, das in derselben Region wie das Anwendungspaket freigegeben wurde, wird die Version innerhalb weniger Stunden gelöscht.

  • Wenn das Anwendungspaket als Datenprodukt eines Freigabeangebots mit Cloud-übergreifender automatischer Ausführung veröffentlicht wurde, kann es länger dauern, bis die Version in allen Regionen gelöscht ist.

Release-Richtlinie für ein Anwendungspaket festlegen

Nachdem Sie eine Version zu einem Anwendungspaket hinzugefügt haben, können Sie eine Release-Richtlinie für das Anwendungspaket angeben. Mit den Release-Richtlinien wird festgelegt, welche Version der Anwendung einem Verbraucher zur Verfügung gestellt wird, wenn dieser die App installiert oder wenn für eine installierte App ein automatisches Upgrade ausgeführt wird.

Erforderliche Berechtigungen zum Festlegen der Release-Richtlinie

Für das Festlegen einer Release-Richtlinie muss der Anbieter die Berechtigung MANAGE RELEASES oder die Eigentümerschaft an dem Anwendungspaket haben.

GRANT MANAGE RELEASES ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE release_mgr;
Copy

Standard-Release-Richtlinie für ein Anwendungspaket festlegen

Verwenden Sie zum Festlegen der Standard-Release-Richtlinie den Befehl ALTER APPLICATION PACKAGE mit SET DEFAULT RELEASE DIRECTIVE, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE hello_snowflake_package
  SET DEFAULT RELEASE DIRECTIVE
  VERSION = v1_0
  PATCH = 2;
Copy

Um die Standard-Release-Richtlinie für ein Anwendungspaket zu aktualisieren, führen Sie den Befehl ALTER APPLICATION PACKAGE erneut mit SET DEFAULT RELEASE DIRECTIVE aus, wobei Sie neue Werte für VERSION und PATCH angeben.

Kundenspezifische Release-Richtlinie für ein Anwendungspaket festlegen

Um eine kundenspezifische Release-Richtlinie hinzuzufügen, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit SET RELEASE DIRECTIVE. Verwenden Sie die Klausel ACCOUNTS, um die Konten anzugeben, für die diese Release-Richtlinie gelten soll. Beispiel:

ALTER APPLICATION PACKAGE hello_snowflake_package
  SET RELEASE DIRECTIVE hello_snowflake_package_custom
  ACCOUNTS = (CONSUMER_ORG.CONSUMER_ACCOUNT)
  VERSION = v1_0
  PATCH = 0;
Copy

Kundenspezifische Release-Richtlinie aktualisieren

Um die Version oder den Patch für eine kundenspezifische Release-Richtlinie zu aktualisieren, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit MODIFY RELEASE DIRECTIVE wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE hello_snowflake_package
  MODIFY RELEASE DIRECTIVE hello_snowflake_package_custom
  VERSION = v1_0
  PATCH = 0;
Copy

Sie können jedoch nicht die Konten ändern, die der Release-Richtlinie zugeordnet sind. Um die Organisation und das Konto zu ändern, die einer Release-Richtlinie zugeordnet sind, gehen Sie wie folgt vor:

  1. Entfernen Sie die Release-Richtlinie aus dem Anwendungspaket, indem Sie den Befehl ALTER APPLICATION PACKAGE mit UNSET RELEASE DIRECTIVE ausführen.

  2. Fügen Sie die Release-Richtlinie wieder zum Anwendungspaket hinzu, indem Sie den Befehl ALTER APPLICATION PACKAGE mit SET RELEASE DIRECTIVE ausführen und dabei mit der Klausel ACCOUNTS die Liste der Konten angeben.

Bemerkung

Wenn Sie Organisation und Konto ändern, die mit der Release-Richtlinie verknüpft sind, müssen Sie die neue Release-Richtlinie unmittelbar nach dem Entfernen der alten hinzufügen. Wenn Sie dies nicht tun, werden die installierten Apps für die Konten, die der kundenspezifischen Release-Richtlinie zugewiesen sind, auf die Standard-Release-Richtlinie zurückgesetzt.

Kundenspezifische Release-Richtlinie entfernen

Um eine kundenspezifische Release-Richtlinie aus einem Anwendungspaket zu entfernen, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit UNSET RELEASE DIRECTIVE wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE hello_snowflake_package
  UNSET RELEASE DIRECTIVE hello_snowflake_package_custom;
Copy

Version und Patch mithilfe einer Release-Richtlinie testen

Wenn Sie eine Anwendung aus einem Anwendungspaket im Entwicklungsmodus installieren, werden die Version und der Patch explizit angegeben. Dies gilt nicht, wenn die Anwendung mit dem folgenden Befehl installiert wird:

CREATE APPLICATION hello_snowflake
  FROM APPLICATION PACKAGE hello_snowflake_package
Copy

In diesem Fall bestimmt die Release-Richtlinie die Version, die bei der Ausführung dieses Befehls installiert wird.

Upgrade einer Snowflake Native App

Ein Upgrade wird initiiert, wenn der Anbieter die Release-Richtlinie für das Anwendungspaket festlegt oder ändert.

Workflow für das Upgrade einer Snowflake Native App

Ein Anbieter aktualisiert eine installierte App mithilfe des folgenden Workflows:

  1. Aktualisieren Sie die Anwendungslogik und das Setup-Skript des Anwendungspakets.

  2. Wenn derzeit zwei Versionen definiert sind, entfernen Sie eine Version aus dem Anwendungspaket.

  3. Erstellen Sie eine neue Version oder einen neuen Patch für die Änderungen im Anwendungspaket.

    Wenn die Eigenschaft DISTRIBUTION der Anwendung auf EXTERNAL gesetzt ist, wird der automatische Sicherheitsscan initiiert. Der Sicherheitsscan muss bestanden werden, bevor das Upgrade durchgeführt werden kann.

  4. Testen Sie die neue Version, indem Sie ein APPLICATION-Objekt im Testkonto des Anbieters erstellen.

  5. Aktualisieren Sie die Release-Richtlinie für die Version oder den Patch.

    Dadurch wird ein automatisches Upgrade initiiert, bei dem alle installierten Instanzen der vorherigen Version aktualisiert werden. Ein Anbieter kann den Verbraucher benachrichtigen, dass ein Upgrade verfügbar ist, und ihn auffordern, ein manuelles Upgrade durchzuführen.

Bemerkung

Nach dem Upgrade eines Anwendungspakets sind Änderungen an der installierten Snowflake Native App im Benutzerkonto möglicherweise erst sichtbar, wenn die Aktualisierung in Remoteregionen durchgeführt wurde.

Sie können die Ansicht APPLICATION_STATE im DATA_SHARING_USAGE-Schema verwenden, um den Status zu überwachen. Wenn das Upgrade mehr als 1 Tag nach der erstmaligen Aktualisierung (Refresh), die auf das Upgrade folgt, nicht abgeschlossen ist, liegt möglicherweise ein Problem mit dem Aktualisierungsprozess vor. Wenden Sie sich an den Snowflake-Support.

Regionsübergreifendes Upgrade einer installierten App

Wenn ein Anbieter eine Snowflake Native App mithilfe der Cloud-übergreifende automatische Ausführung veröffentlicht hat, können automatische Upgrades abhängig von den folgenden Faktoren einige Zeit in Anspruch nehmen:

  • Wert für der Aktualisierungshäufigkeit im Aktualisierungszeitplan

  • Anzahl der installierten Instanzen der App

  • Anzahl der Regionen, in denen die App eingesetzt wird

Wenn das Upgrade eine dringende Problembehebung enthält, die in einer Remoteregion aktualisiert werden muss, können Anbieter die folgenden Möglichkeiten in Betracht ziehen, um ein Upgrade schneller durchzuführen:

Manuelles Upgrade einer installierten App ausführen

Manuelle Upgrades ermöglichen es einem Verbraucher, das Upgrade der installierten Version oder des installierten Patches einer App unter Verwendung der im Anwendungspaket angegebenen Release-Richtlinie zu initiieren.

Um eine installierte Snowflake Native App auf die neueste verfügbare Version zu aktualisieren, kann ein Verbraucher die UPGRADE-Klausel des ALTER APPLICATION-Befehls verwenden, um das Anwendungsobjekt zu ändern:

ALTER APPLICATION <name> UPGRADE
Copy

Status eines Upgrades anzeigen

Um den Upgrade-Status einer App anzuzeigen, verwenden Sie die Systemansicht Ansicht APPLICATION_STATE, wie im folgenden Beispiel gezeigt:

SELECT * FROM snowflake.data_sharing_usage.APPLICATION_STATE
Copy

Diese Ansicht enthält Spalten, die für Upgrades spezifisch sind, einschließlich des Upgrade-Status und der Region, in der die App bereitgestellt wird.