Streamlit in Snowflake について

注意

この機能は AWS およびMicrosoft Azure商用リージョン のアカウントで利用できます。 AWS PrivateLink はサポートされていません。

このトピックでは、 Streamlit in Snowflake を使ってStreamlitアプリケーションを開発および実行する方法について説明します。

Streamlit in Snowflake について

Streamlit はオープンソースのPythonライブラリで、機械学習やデータサイエンスのためのカスタムウェブアプリを簡単に作成・共有できます。Streamlitを使用することで、強力なデータアプリケーションを迅速に構築し、展開することができます。オープンソースライブラリの詳細については、 Streamlit Libraryのドキュメンテーション をご参照ください。

Streamlit in Snowflake は、開発者がSnowflakeのデータクラウド上でStreamlitアプリを安全に構築、展開、共有するのに役立ちます。 Streamlit in Snowflake を使用すると、データやアプリケーションコードを外部システムに移動することなく、Snowflake のデータを処理して使用するアプリケーションを構築できます。

Streamlit in Snowflake を使用するための前提条件

Streamlit in Snowflake を使用するには、以下の前提条件を満たしている必要があります。

Streamlitアプリの作成と使用に必要な権限

Streamlit in Snowflake 内では、Streamlitアプリは、 Snowflake アクセス制御フレームワーク に準拠するセキュリティ保護可能なオブジェクトです。Streamlitアプリは、所有者の権限に基づく権限モデルを使用しています。詳細については 所有者の権利と Streamlit in Snowflake アプリの理解 をご参照ください。

アプリ編集者とStreamlitアプリを含むスキーマの所有者は、アプリの使用権限を持つロールを決定できます。ユーザーはアプリと対話することができ、Streamlitアプリが表示するものをすべて見ることができます。ユーザーには、所有者と同じアプリのビューが見えます。

詳細については、 Streamlitアプリを共有する をご参照ください

Streamlitアプリの作成に必要な権限

Streamlitアプリはスキーマレベルのオブジェクトです。 Streamlit in Snowflake を使用してStreamlitアプリの作成と編集を行うには、Streamlitアプリを含むスキーマとデータベースに対して以下の権限を付与されたロールを使用する必要があります。

  • USAGE

  • CREATE STREAMLIT

  • CREATE STAGE

以下の例に示すように、 GRANT <権限> コマンドを使用してこれらの権限をロールに付与します。

GRANT USAGE ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE mydb TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE streamlit_creator;
Copy

Streamlitアプリの表示に必要な権限

Streamlitアプリを表示するには、Snowflakeアカウントを持っており、サインインしている必要があります。さらに、アカウントには以下の USAGE 権限を持つロールが付与されている必要があります。

  • Streamlitアプリを含むデータベース。

  • Streamlitアプリを含むスキーマ。

  • Streamlitアプリ。

ほとんどの場合、アプリ所有者が他のロールとStreamlitアプリを共有すると、 USAGE 権限は自動的に新しいロールに付与されます。ただし、 MANAGED ACCESS を持つスキーマでStreamlitアプリが作成された場合は、 USAGE 権限を新しいロールに手動で付与する必要があります。

スキーマの所有者または MANAGE GRANTS 権限を持つロールは、以下の例に示すように GRANT <権限> コマンドを使用して USAGE 権限を付与する必要があります。

GRANT USAGE ON DATABASE mydb.streamlit_db TO ROLE streamlit_user;
GRANT USAGE ON SCHEMA mydb.streamlit_schema TO ROLE streamlit_user;
GRANT USAGE on STREAMLIT mydb.streamlit_app to ROLE streamlit_user;
Copy

注釈

将来の付与 は STREAMLIT オブジェクトではサポートされていません。

サポートされているStreamlitライブラリのバージョン

Streamlit in Snowflake はStreamlitライブラリのv1.22.0をサポートしています。Streamlitライブラリの新しいバージョンのサポートは、リリースされ次第提供されます。

サポートされている外部パッケージ

デフォルトでは、 Streamlit in Snowflake には pythonstreamlitsnowflake-snowpark-python パッケージがプレインストールされています。環境には、これらのパッケージが必要とする依存関係に対するアクセスもあります。

Streamlitアプリに追加パッケージをインストールすることができます。サポートされるパッケージのリストについては、 Snowflake Anaconda Channel をご参照ください。

Streamliltアプリにサポートされているパッケージを含める方法については、以下のトピックをご参照ください。

Streamlit in Snowflake の同時実行に関する考慮事項

Streamlit in Snowflake は、Snowflake内でセッションのスロットリングと自動スケーリングを提供し、Streamlitアプリの需要が増加する期間に対処します。 Streamlit in Snowflake はクラウドサービスインスタンスと仮想ウェアハウスインスタンスの組み合わせを使用します。詳細については、 重要な概念およびアーキテクチャ をご参照ください。

Snowflakeの整合性を維持するために、 Streamlit in Snowflake はCloud Servicesインスタンスが処理できる同時Streamlitセッション数にインスタンス毎、アカウント毎、ユーザー毎の制限を課しています。Streamlitセッションは、すべてのインスタンスが同時実行セッションの上限に達するまで、これらのインスタンス間で負荷分散されます。制限に達すると、インスタンスは追加のセッションをサポートするように自動スケールされます。

注釈

Streamlitアプリのユーザーからのリクエストは、一時的にスロットリングされる可能性があります。自動スケーリングが開始されると、ユーザーに「Please Wait(お待ちください)」メッセージが表示される場合があります。

Streamlit in Snowflake の請求に関する考慮事項

Streamlit in Snowflake では、 仮想ウェアハウス でStreamlitアプリを実行し、SQL クエリを実行する必要があります。Streamlitアプリを実行するには、アプリ本体とクエリの両方を実行する単一の仮想ウェアハウスを選択する必要があります。このウェアハウスは、アプリの WebSocket 接続がアクティブな間はアクティブな状態に留まります。Streamlitアプリの仮想ウェアハウスをアクティブに保つ WebSocket 接続は、アプリの最後の使用から約15分後に失効します。

クレジットを節約するために、仮想ウェアハウスを中断することができます。あるいは、アプリを実行しているウェブページを閉じ、実行中の仮想ウェアハウスを自動中断することもできます。

Streamlit in Snowflake でのウェアハウス選択のガイドライン

Streamlit in Snowflake でStreamlitアプリを実行する場合、Streamlitアプリの複雑さ、ウェアハウスの可用性、遅延、コストなど、複数の要因がパフォーマンスに影響する可能性があります。以下のセクションでは、 Streamlit in Snowflake で仮想ウェアハウスを使用するための一般的なガイドラインを示します。

小規模なウェアハウスを使用する

Streamlit in Snowflake でStreamlitアプリを実行する場合、可能な限り小さなウェアハウスを選択する必要があります。

実行中、ウェアハウスはStreamlitアプリが使用するPythonパッケージのキャッシュを維持します。Pythonパッケージのキャッシュは、パッケージを再度ダウンロードする代わりにキャッシュされたバージョンのパッケージを使用することで、後でアプリをロードする際のパフォーマンスを向上させます。キャッシュはウェアハウスが中断されると削除されるため、ウェアハウス再開後のアプリの初期読み込みが遅くなる可能性があります。再開されたウェアハウスが実行され、より多くのクエリが処理されると、パッケージのキャッシュが再構築され、キャッシュを利用できるアプリのロードパフォーマンスが向上します。

秒単位のクレジット請求と自動中断により、小規模のウェアハウスから始めて、Streamlitアプリのワークロードに合わせてウェアハウスのサイズを調整する柔軟性が得られることに注意してください。ウェアハウスのサイズはいつでも縮小できます。詳細については、 Streamlitアプリのウェアハウスを変更する をご参照ください。

専用のウェアハウスを使用する

Streamlit in Snowflake を使用する場合、SnowflakeではStreamlitアプリを実行するために専用のウェアハウスを使用することを推奨します。これにより、Streamlitアプリの運営コストを切り分けることができます。専用のウェアハウスは、ウェアハウスが他のワークロードを管理する必要がないため、アプリのロード時間も短縮できます。

詳細については、 ウェアハウスに関する考慮事項 をご参照ください。