制限とサポートされていない機能

このトピックでは、 Streamlit in Snowflake 上での制限について説明します。

サポートされていないStreamlit機能

以下のStreamlit機能は、 Streamlit in Snowflake ではサポートされていません。

Streamlit in Snowflake で外部リソースを読み込む際の制限

すべての Streamlit in Snowflake アプリは、 コンテンツ・セキュリティ・ポリシー (CSP) の中で実行され、どのリソースをロードできるかを制限します。Snowflakeは、スクリプト、スタイル、フォント、iframe埋め込みなど、あらゆる外部ドメインからのコードの読み込みをブロックします。ただし、Mapboxからのリソースのサブセットのロードはサポートされています。

st.map または st.pydeck_chart Streamlitコマンドを使用する場合、Mapboxはマップコンテンツのレンダリング時にマップタイルを提供します。Mapboxはサードパーティのアプリケーションであり、Snowflakeの 外部製品規約 が適用されます。

外部ドメインからの画像やメディアの読み込みは、 Streamlit in Snowflake ではサポートされていますが、 Snowflake Native App Framework ではサポートされていません。

例えば、以下のコードはPythonエラーなしで実行されますが、スクリプトはブラウザに読み込まれず、実行されません:

# This will not work
import streamlit.components.v1 as components
components.html("""
<script src="http://www.example.com/example.js"></script>
""", height=0)
Copy

CSP はまた、 eval() のような、一般に安全でないと考えられているフロントエンドの呼び出しもブロックします。

注釈

アプリ開発者は、 Snowflake's Shared Responsibility Model に従い、 Streamlit in Snowflake アプリコードのセキュリティチェックとソフトウェアサプライチェーンに責任を負います。

その他の Streamlit in Snowflake 制限事項

Streamlit in Snowflake にはさらに以下の制限があります:

Streamlitアプリはデータ取得に制限がある

Streamlit in Snowflake と Snowflake Native App で実行中のStreamlitアプリは、1回のクエリから取得できるデータ量に 32MB の制限があります。32MB を超えるクエリは以下のエラーをスローします。

MessageSizeError: Data Size exceeds message limit

この制限を回避するには、 32MB より小さい単位でデータを取得するようにStreamlitアプリを設計します。

Streamlit in Snowflake エディターはサーバー側の暗号化を使うステージをサポートしていません。

Streamlit in Snowflake エディターでは サーバー側の暗号化を使用する名前付きステージ上のファイルから STREAMLIT オブジェクト を作成することをサポートしていません。この場合、 Snowsight はエラーを返します。

Streamlit in Snowflake はクライアント側の暗号化を使用する内部ステージのみをサポートします。

st.cache_data および st.cache_resource は完全にはサポートされていません

st.cache_data および st.cache_resource は、 Streamlit in Snowflake では完全にサポートされていません。キャッシュは単一のセッション内でのみ機能します。キャッシュされた値は他のセッションに引き継がれず、Streamlitアプリの異なるユーザー間で共有することはできません。

複数ページのStreamlitアプリは、いくつかの考慮事項がありますがサポートされている

複数ページのStreamlitアプリは、以下の点を考慮してサポートされています。

  • 複数ページの Streamlit アプリは SQL コマンドでのみ作成できます。 SQL を使用してStreamlitアプリを作成し、デプロイします。 をご参照ください。

  • 個別ページの URLs はサポートされていません。

  • /pages ディレクトリにアップロードされたファイルは、指定されたステージの ROOT_LOCATION 内に表示されます。