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.
-
Die Eigenschaften
page_title
undpage_icon
des Befehls st.set_page_config werden nicht unterstützt. Kundenspezifische Komponenten, einschließlich:
Die folgenden experimentellen Features:
Unsicheres HTML mit
unsafe_allow_html=True
wird in st.markdown nicht unterstützt.Netzwerkzugriff über das Internet
Anker-Links
Workflow zum Erstellen und Testen einer Streamlit-App¶
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.
Lesen Sie die folgenden Abschnitte, um sich über die unterstützten Versionen der Streamlit-Bibliothek und nicht unterstützte Features zu informieren:
Entwickeln Sie eine Streamlit-App.
Informationen zur Streamlit-Open-Source-Bibliothek finden Sie in der Streamlit Library-Dokumentation.
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.
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.
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.
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.
Laden Sie die Streamlit-Dateien, die
environment.yml
-Datei, das Setup-Skript und diemanifest.yml
-Dateien in einen benannten Stagingbereich hoch. Um Streamlit-Codedateien in ein Anwendungspaket einzubinden, müssen die Dateien in einen benannten Stagingbereich hochgeladen werden.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.
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
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;
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
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
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
...
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';
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:
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Data Products » Apps aus.
Wählen Sie die Streamlit-App aus, die Sie anzeigen möchten.
Die primäre Streamlit-App wird in Snowsight geöffnet.
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.