Benutzer-Frontend mit Streamlit zu einer App hinzufügen

Unter diesem Thema wird beschrieben, wie Sie eine Streamlit-App in eine Snowflake Native App einbinden.

Allgemeine Informationen zu Streamlit und das Snowflake Native App Framework

Streamlit ist eine Open-Source-Python-Bibliothek, mit der sich kundenspezifische Webanwendungen für maschinelles Lernen und Data Science leicht erstellen und freigeben lassen. Mit Streamlit können Sie schnell leistungsstarke Datenanwendungen erstellen und einsetzen.

Informationen zur Open-Source-Bibliothek finden Sie in der Streamlit Library-Dokumentation.

Innerhalb des Snowflake Native App Framework können Sie mit Streamlit Folgendes tun:

  • Erstellen einer Frontend-Webanwendung, mit der Verbraucher die von Ihrer Snowflake Native App bereitgestellten Daten visualisieren können.

  • Erstellen einer Benutzeroberfläche, über die Verbraucher innerhalb ihres Kontos Berechtigungen erteilen und Referenzen auf Objekte erstellen können, die von der Snowflake Native App verwendet werden.

    Weitere Informationen dazu finden Sie unter Zugriff auf Objekte in einem Verbraucherkonto anfordern.

Bemerkung

Weitere Informationen zu den unterstützten Streamlit-Features finden Sie unter Nicht unterstützte Streamlit-Features.

Unterstützte Versionen der Streamlit-Bibliothek

Das Snowflake Native App Framework unterstützt v1.22.0 der Streamlit-Bibliothek. Unterstützung für spätere Versionen der Streamlit-Bibliothek wird nach und nach hinzugefügt.

Unterstützte externe Pakete

Standardmäßig enthält eine Streamlit-App, die in einer Snowflake Native App eingebunden ist, die Pakete python, streamlit und snowflake-snowpark-python, die in der Verbraucherumgebung vorinstalliert sind. Die Verbraucherumgebung hat auch Zugriff auf die von diesen Paketen benötigten Abhängigkeiten.

Nicht unterstützte Streamlit-Features

Die folgenden Streamlit-Features werden derzeit nicht unterstützt, wenn Streamlit in einer Snowflake Native App verwendet wird:

  • Kundenspezifische Komponenten werden nicht unterstützt.

  • Die Verwendung von AWS PrivateLink oder Azure PrivateLink für den Zugriff auf eine Streamlit-App wird nicht unterstützt.

Workflow zum Erstellen und Testen einer Streamlit-App

Der folgende Workflow beschreibt einen typischen Workflow für das Einbinden einer Streamlit-App in ein Anwendungspaket. Je nach den Anforderungen Ihrer App kann dies ein iterativer Prozess sein.

  1. Entwickeln Sie Ihre native App.

    Dazu gehört das Hinzufügen der Dateninhalte, auf die die Verbraucher über Streamlit zugreifen sollen. Weitere Informationen dazu finden Sie unter Snowflake Native App Framework-Workflow.

  2. Lesen Sie die folgenden Abschnitte, um sich über die unterstützten Versionen der Streamlit-Bibliothek und nicht unterstützte Features zu informieren:

  3. Entwickeln Sie eine Streamlit-App.

    Informationen zur Streamlit-Open-Source-Bibliothek finden Sie in der Streamlit Library-Dokumentation.

  4. Erstellen Sie eine lokale Verzeichnisstruktur für die Streamlit-App.

    Empfehlungen dafür, wie Sie Ihre Streamlit-Dateien innerhalb der Struktur Ihrer App organisieren können, finden Sie unter Beispiel einer Verzeichnisstruktur für eine Streamlit-App.

  5. Fügen Sie der Datei manifest.yml einen Eintrag für die Streamlit-App hinzu.

    Um eine Streamlit-App einzubinden, müssen Sie der manifest.yml-Datei den Namen der Standard-Streamlit-Datei hinzufügen. Weitere Informationen dazu finden Sie unter Hinzufügen einer Streamlit-App zur Manifest-Datei.

  6. Fügen Sie eine CREATE STREAMLIT-Anweisung in das Setup-Skript ein.

    Wenn Sie den Befehl CREATE APPLICATION ausführen, führt das Setup-Skript die Anweisung CREATE STREAMLIT aus, um ein Streamlit-Objekt zu erstellen. Dieses Objekt enthält das Schema und die Python-Dateien, die von der Streamlit-App benötigt werden.

  7. Konfigurieren Sie die Datei environment.yml, um zusätzliche Bibliotheken in Ihre Streamlit-App einzubinden.

    Weitere Informationen dazu finden Sie unter Zusätzliche Pakete zu einer Streamlit-App hinzufügen.

  8. Laden Sie die Streamlit-Dateien, die environment.yml-Datei, das Setup-Skript und die manifest.yml-Dateien in einen benannten Stagingbereich hoch. Um Streamlit-Codedateien in ein Anwendungspaket einzubinden, müssen die Dateien in einen benannten Stagingbereich hochgeladen werden.

  9. Testen Sie das Anwendungspaket.

    Nachdem Sie die für das Anwendungspaket und die Streamlit-App erforderlichen Dateien erstellt haben, erstellen Sie ein Anwendungsobjekt, um das Setup-Skript und die Datei manifest.yml zu testen.

    Weitere Informationen dazu finden Sie unter Anwendungspaket testen, das die Streamlit-App enthält.

  10. Zeigen Sie die Streamlit-App in Snowsight an.

    Um die Streamlit-App zu testen, zeigen Sie die App in Snowsight an. Siehe Streamlit-App in Snowsight testen.

Beispiel einer Verzeichnisstruktur für eine Streamlit-App

Wie bei anderen Python-Modulen müssen Sie, um eine Streamlit-App zu einem Anwendungspaket hinzuzufügen, Ihre Streamlit-Codedateien in einen benannten Stagingbereich hochladen. Weitere Informationen zum Hochladen von Dateien in einen Stagingbereich finden Sie unter PUT.

Um mehrere Versionen einer Snowflake Native App zu integrieren, müssen Sie Ihre Streamlit-Apps und zugehörige Anwendungsdateien mithilfe einer Verzeichnisstruktur wie der folgenden verwalten:

@test.schema1.stage1:
└── /
    ├── manifest.yml
    ├── readme.md
    ├── scripts/setup_script.sql
    └── code_artifacts/
        └── streamlit/
            └── environment.yml
            └── streamlit_app.py
Copy

Beachten Sie, dass die von Ihnen erstellte Verzeichnisstruktur von den Anforderungen Ihrer App und der Entwicklungsumgebung abhängt.

Bemerkung

Die Datei environment.yml muss sich auf derselben Ebene befinden wie die Hauptdatei Ihrer Streamlit-App.

Weitere Informationen zu relativen Pfadangaben finden Sie unter Externen Codedateien referenzieren.

Hinzufügen einer Streamlit-App zur Manifest-Datei

Um eine Streamlit-Datei in ein Anwendungspaket einzubinden, fügen Sie der manifest.yml-Datei folgende Einträge hinzu:

artifacts:
  ...
  extension_code: true
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

Der Eintrag extension_code: true ist erforderlich, um beliebigen Erweiterungscode in Ihrer App zu aktivieren.

Der Eintrag default_streamlit: app_schema.streamlit_app_na gibt den Speicherort des Schemas an, das Ihre Streamlit-App enthält.

Streamlit-Objekt im Setup-Skript erstellen

Das folgende Beispiel zeigt, wie CREATE STREAMLIT innerhalb des Setup-Skripts einer App verwendet wird.

CREATE OR REPLACE STREAMLIT app_schema.my_test_app_na
     FROM '/code_artifacts/streamlit'
     MAIN_FILE = '/streamlit_app.py';

GRANT USAGE ON SCHEMA APP_SCHEMA TO APPLICATION ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO APPLICATION ROLE app_public;
Copy

In diesem Beispiel wird ein Streamlit-Objekt innerhalb eines Schemas namens app_schema erstellt. Der Befehl CREATE STREAMLIT verwendet die in der MAIN_FILE-Klausel angegebene Streamlit-App. Der Speicherort des Verzeichnisses wird durch den Wert der FROM-Klausel angegeben.

Informationen zum Erstellen der Verzeichnisstruktur für eine Streamlit-App innerhalb eines Anwendungspakets finden Sie unter Beispiel einer Verzeichnisstruktur für eine Streamlit-App.

In diesem Beispiel werden einer Anwendungsrolle auch die erforderlichen Berechtigungen für das Schema und das Streamlit-Objekt erteilt.

Zusätzliche Pakete zu einer Streamlit-App hinzufügen

Verwenden Sie die Datei environment.yml, um zusätzliche Python-Pakete zu einer Streamlit-App hinzuzufügen. Um beispielsweise die Bibliothek scikit-learn zu einer Streamlit-App hinzuzufügen, fügen Sie der environment.yml-Datei Folgendes hinzu:

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
Copy

Die Eigenschaften name und channels sind beide erforderlich.

Außerdem wird der Schlüssel - snowflake unter der Eigenschaft channels benötigt. Dies gibt den Snowflake-Anaconda-Kanal an.

Bemerkung

Sie können nur Pakete installieren, die im Snowflake Anaconda-Kanal aufgeführt sind. Snowflake unterstützt keine externen Anaconda-Kanäle in Streamlit.

Anwendungspaket testen, das die Streamlit-App enthält

Um das Anwendungspaket, das die Streamlit-App enthält, zu testen, erstellen Sie ein Anwendungsobjekt, das die Dateien in einem benannten Stagingbereich verwendet, indem Sie den Befehl CREATE APPLICATION wie im folgenden Beispiel ausführen:

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

Je nachdem, was Sie testen möchten, können Sie das Anwendungsobjekt mit anderen Formen von CREATE APPLICATION erstellen. Beispielsweise können Sie die Streamlit-App im Rahmen einer Version oder eines Upgrades testen. Siehe Anwendungsobjekt erstellen.

Streamlit-App in Snowsight testen

Um die Streamlit-App zu testen, zeigen Sie die App wie folgt in Snowsight an:

  1. Melden Sie sich bei Snowsight an.

  2. Klicken Sie in der linken Navigationsleiste auf Streamlit.

  3. Wählen Sie die Streamlit-App aus, die Sie anzeigen möchten.

    Die primäre Streamlit-App wird in Snowsight geöffnet.

  4. Optional: Wenn Sie eine mehrseitige Streamlit-App anzeigen, wählen Sie eine Registerkarte, um weitere Seiten anzuzeigen.

Problembehandlung bei einer Streamlit-App im Snowflake Native App Framework

Wenn die App einen unbekannten Fehler anzeigt, müssen Sie sicherstellen, dass Sie die in den folgenden Abschnitten beschriebenen Lösungen getestet haben.

Nutzungsbedingungen anerkennen

Bevor Sie Streamlit und die von Anaconda bereitgestellten Pakete in Snowflake verwenden können, müssen Sie die Bedingungen für externe Angebote anerkennen. Weitere Informationen dazu finden Sie unter Verwenden von Drittanbieterpaketen aus Anaconda.

Firewall-Zulassungsliste

Jede Streamlit-Anwendung verwendet eine eigene Subdomäne. Wenn Sie strenge Firewalls verwenden, fügen Sie *.snowflake.app zu Ihrer Firewall-Zulassungsliste hinzu. Wenn Sie diesen Eintrag zu Ihrer Zulassungsliste hinzufügen, können Ihre Apps ohne Einschränkungen mit Snowflake-Servern kommunizieren.