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 Web-Apps 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

Die Snowflake Native App Framework unterstützt die folgenden Versionen der Streamlit-Bibliothek:

  • 1.35.0

  • 1.31.1

  • 1.29.0

  • 1.26.0

  • 1.22.0

Unterstützung für neuere Versionen der Streamlit-Bibliothek wird nach und nach hinzugefügt.

Unter Streamlit-Version für eine App festlegen finden Sie Informationen darüber, wie Sie die Version einer Streamlit-App festlegen.

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 Azure Private Link für den Zugriff auf eine Streamlit-App wird nicht unterstützt.

Workflow zum Erstellen und Testen einer Streamlit-App

  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.

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

  5. 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.

  6. 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.

  7. Optional: Fügen Sie den Streamlit-Objektnamen als Eintrag in der Datei manifest.yaml hinzu, um die Streamlit-App als Standard-App in Snowsight anzuzeigen.

    Weitere Informationen dazu finden Sie unter Streamlit-App zur Manifest-Datei 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.

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.

Streamlit-Version für eine App festlegen

Das Snowflake Native App Framework unterstützt mehrere Versionen der Streamlit-Bibliothek. Um die Streamlit-Version in einer Snowflake Native App festzulegen, fügen Sie streamlit in den Abschnitt dependencies der Datei environment.yml ein, wie im folgenden Beispiel gezeigt:

name: sf_env
channels:
- snowflake
dependencies:
- streamlit=1.22.0|1.26.0
Copy

Snowflake empfiehlt, die Streamlit-Version für Ihre App explizit festzulegen. Wenn Sie jedoch die Version der Streamlit-Bibliothek nicht explizit festlegen, wird derzeit Streamlit-Version 1.22.0 als Standard festgelegt.

Streamlit-App zur Manifest-Datei hinzufügen

Um die standardmäßige Streamlit-App festzulegen, die von Ihrer nativen App gestartet wird, fügen Sie die folgenden Einträge in der Datei manifest.yml hinzu.

artifacts:
  ...
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

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

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 Eine App lokal installieren und testen.

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. Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.

  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.