Streamlitアプリの追加¶
このトピックでは、 Streamlit アプリを Snowflake Native App 内に含める方法について説明します。
Streamlitおよび Snowflake Native App Framework について¶
Streamlit はオープンソースのPythonライブラリで、機械学習やデータサイエンスのためのカスタムウェブアプリを簡単に作成、共有できます。Streamlitを使用することで、強力なデータアプリケーションを迅速に構築し、展開することができます。
オープンソースライブラリの詳細については、 Streamlitライブラリのドキュメント をご参照ください。
Snowflake Native App Framework 内では、Streamlitを使用して以下を実行できます。
自身の Snowflake Native App が提供するデータをコンシューマーが視覚化できるフロントエンドのウェブアプリを作成する。
コンシューマーが権限を付与し、 Snowflake Native App で使用されるコンシューマーのアカウント内でオブジェクトへの参照を作成するユーザーインターフェイスを作成する。
詳細については、 コンシューマーアカウントでオブジェクトを作成し、アクセスする をご参照ください。
注釈
サポートされていないStreamlit機能については、 サポートされていないStreamlit機能 をご参照ください。
サポートされているStreamlitライブラリのバージョン¶
Snowflake Native App Framework は、 Streamlit in Snowflake と同じバージョンのStreamlitライブラリをサポートします。詳細については、 サポートされているStreamlitライブラリのバージョン をご参照ください。
Streamlitライブラリの新しいバージョンのサポートは、リリースされ次第提供されます。
Streamlitアプリのバージョンを設定する方法については、 アプリのStreamlitバージョンの設定 をご参照ください。
サポートされている外部パッケージ¶
デフォルトでは、 Snowflake Native App 内に含まれるStreamlitアプリに、 python、 streamlit、 snowflake-snowpark-python パッケージがコンシューマー環境でプリインストールされています。コンシューマー環境には、これらのパッケージが必要とする依存関係に対するアクセス権もあります。
サポートされていないStreamlit機能¶
Snowflake Native App でStreamlitを使用する場合、以下のStreamlit機能は現在サポートされていません。
カスタムコンポーネントはサポートされていません。
Azure Private Link および Google Cloud Private Service Connect を使用して Streamlit アプリにアクセスすることはサポートされていません。
-
st.set_page_config コマンドの
page_titleとpage_iconのプロパティはサポートされていません。 以下を含む カスタムコンポーネント。
以下の実験的機能:
インターネット経由のネットワークアクセス
アンカーリンク
StreamlitアプリをSnowflake Native Appに追加するワークフロー¶
次のワークフローでは、Streamlit アプリを Snowflake Native App に追加する方法を説明します。
ネイティブアプリを開発します。
これには、Streamlitを使用してコンシューマーにアクセスしてもらうデータコンテンツの追加も含まれます。詳細については、 Snowflake Native App Frameworkワークフロー をご参照ください。
Streamlitライブラリのサポートされるバージョンとサポートされない機能を理解するために、以下のセクションを確認してください。
Streamlitアプリを開発します。
Streamlitオープンソースライブラリの使用に関する情報については、 Streamlitライブラリドキュメント をご参照ください。
Streamlitアプリのローカルディレクトリ構造を作成します。
Streamlitファイルのアプリ構造内における整理方法の推奨事項については、 Streamlitアプリのディレクトリ構造例 をご参照ください。
セットアップスクリプトに CREATE STREAMLIT ステートメントを追加します。
CREATE APPLICATION コマンドを実行すると、セットアップスクリプトは CREATE STREAMLIT ステートメントを実行してStreamlitオブジェクトを作成します。このオブジェクトには、Streamlitアプリが必要とするスキーマとPythonファイルが含まれています。
environment.ymlファイルを構成して、Streamlitアプリに追加ライブラリを含めます。詳細については、 Streamlitアプリに付加的パッケージを追加する をご参照ください。
オプション: Snowsight のデフォルトアプリとして Streamlit アプリを表示するために、
manifest.yamlファイルにStreamlitオブジェクト名を追加します。詳細については、 マニフェストファイルへのStreamlitアプリの追加 をご参照ください。
Streamlitファイル、
environment.ymlファイル、セットアップスクリプト、manifest.ymlファイルを名前付きステージにアップロードします。Streamlitコードファイルをアプリケーションパッケージに含めるには、そのファイルを名前付きステージにアップロードする必要があります。アプリケーションパッケージをテストします。
アプリケーションパッケージとStreamlitアプリで必要なファイルを作成した後、セットアップスクリプトと
manifest.ymlファイルをテストするアプリケーションオブジェクトを作成します。詳細については、 Streamlitアプリを含んでいるアプリケーションパッケージをテストする をご参照ください。
Snowsight でStreamlitアプリを表示します。
Streamlitアプリをテストするには、アプリを Snowsight で表示します。SnowsightでStreamlitアプリをテストする をご参照ください。
Streamlitアプリのディレクトリ構造例¶
他のPythonモジュールと同様に、Streamlitアプリをアプリケーションパッケージに追加するには、Streamlitのコードファイルを名前付きステージにアップロードする必要があります。ステージにファイルをアップロードする方法については、 PUT をご参照ください。
Snowflake Native App の複数のバージョンに対応するため、以下のようなディレクトリ構造を使用して、Streamlitアプリや関連するアプリケーションファイルを管理することを検討してください。
@test.schema1.stage1:
└── /
├── manifest.yml
├── readme.md
├── scripts/setup_script.sql
└── code_artifacts/
└── streamlit/
└── environment.yml
└── streamlit_app.py
作成するディレクトリ構造は、アプリと開発環境の要件に依存することに注意してください。
注釈
environment.yml ファイルはStreamlitアプリのメインファイルと同じレベルにある必要があります。
相対パスに関する詳細については、 外部コードファイルの参照 をご参照ください
セットアップスクリプトでStreamlitオブジェクトを作成します。¶
次の例では、アプリのセットアップスクリプト内で CREATE STREAMLIT を使用する方法を示します。
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;
この例では、 app_schema という名前のスキーマ内にStreamlitオブジェクトを作成します。CREATE STREAMLIT コマンドは、 MAIN_FILE 句で指定されたStreamlitアプリを使用します。ディレクトリの場所は FROM 句の値で指定されます。
アプリケーションパッケージ内でStreamlitアプリのディレクトリ構造を作成する方法については、 Streamlitアプリのディレクトリ構造例 をご参照ください。
この例では、スキーマとStreamlitオブジェクトに対して必要な権限をアプリケーションロールに付与しています。
Streamlitアプリに付加的パッケージを追加する¶
StreamlitアプリにPythonの付加的パッケージを追加するには、 environment.yml ファイルを使用します。たとえば、 scikit-learn ライブラリをStreamlitアプリに追加するには、 environment.yml ファイルに以下を追加します。
name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
name と channels プロパティの両方が必要です。
また、 channels プロパティでは、 - snowflake キーが必要です。これは Snowflake Anaconda Channel 示します。
注釈
Snowflake Anacondaチャネル に記載されているパッケージのみをインストールできます。SnowflakeのStreamlitは、外部Anacondaチャネルをサポートしていません。
アプリのStreamlitバージョンの設定¶
Snowflake Native App Framework は複数のバージョンのStreamlitライブラリをサポートしています。Streamlitのバージョンを Snowflake Native App 内で設定するには、次の例のように environment.yml ファイルの dependencies セクションに streamlit を追加します。
name: sf_env
channels:
- snowflake
dependencies:
- streamlit=1.35.0
Snowflakeでは、アプリのStreamlitバージョンを明示的に設定することを推奨しています。ただし、現在のところ、Streamlitライブラリのバージョンを明示的に設定しない場合、Streamlitバージョン1.22.0がデフォルトとして設定されます。
マニフェストファイルへのStreamlitアプリの追加¶
ネイティブアプリが起動するデフォルトのStreamlitアプリを指定するには、 manifest.yml ファイルに以下のエントリーを追加します。
artifacts:
...
default_streamlit: app_schema.streamlit_app_na
...
default_streamlit: app_schema.streamlit_app_na エントリは、Streamlitアプリを含むスキーマの場所を指定します。
Streamlitアプリを含んでいるアプリケーションパッケージをテストする¶
Streamlitアプリを含んでいるアプリケーションパッケージをテストするには、次の例のように CREATE APPLICATION を実行することにより、名前付きステージ上のファイルを使用してアプリケーションオブジェクトを作成します。
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_code.core.hello_snowflake_stage';
テストする内容によっては、他の形式の CREATE APPLICATION を使用してアプリケーションオブジェクトを作成することもできます。たとえば、バージョンアップやアップグレードの一環としてStreamlitアプリをテストしたい場合があります。アプリをローカルにインストールしてテストする をご参照ください。
SnowsightでStreamlitアプリをテストする¶
Streamlitアプリをテストするには、 Snowsight で以下を実行してアプリを表示します。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Apps を選択します。
表示したいStreamlitアプリを選択します。
Snowsight でメインのStreamlitアプリを開きます。
オプション: 複数ページのStreamlitアプリを表示する場合は、タブを選択して追加ページを表示します。
Snowflake Native App Framework でStreamlitアプリをトラブルシューティングする¶
アプリが不明なエラーを表示する場合は、次のセクションで説明する解決策を確実に試してください。
利用規約を確認する¶
SnowflakeでAnacondaが提供するStreamlitとパッケージを使用するには、 外部製品規約 を確認する必要があります。詳細については、 Anacondaのサードパーティパッケージの使用 をご参照ください。
ファイアウォール許可リスト¶
各Streamlitアプリは、固有のサブドメインを使用します。厳格なファイアウォールを使用している場合は、ファイアウォール許可リストに *.snowflake.app を追加します。このエントリを許可リストに追加すると、アプリは何の制限もなくSnowflakeサーバーと通信できるようになります。