Streamlitアプリの作成

前提条件

Snowflake CLI を使用してStreamlitアプリを作成する前に、次の前提条件を満たす必要があります。

  • Streamlitアプリの作成と使用に必要な権限 に記載されているように、アカウントに正しい権限があることを確認する。

  • Streamlitアプリのファイルをアップロードする名前付きステージを作成できるか、そのアクセス権があることを確認する。

Streamlitアプリをブートストラップする

snow init コマンドを実行すると、Streamlitアプリの作成に役立つサンプルファイルの入ったローカルディレクトリが作成されます。このコマンドを実行すると、 Snowflake CLI は次のディレクトリ構造を作成します。

example_streamlit/            - project name (default: example_streamlit)
  snowflake.yml               - configuration for snow streamlit commands
  environment.yml             - additional config for Streamlit, for example installing packages
  streamlit_app.py            - entrypoint file of the app
  pages/                      - directory name for Streamlit pages (default pages)
  common/                     - example “shared library”

Streamlitアプリを初期化するには、次のコマンドを入力します:

snow init new_streamlit_project --template example_streamlit -D query_warehouse=dev_warehouse -D stage=testing
Copy

注意

プロジェクトディレクトリ内のファイルは Snowflake CLI によって処理され、他の snow streamlit コマンドを実行するときにSnowflakeにアップロードされる可能性があります。プロジェクトディレクトリのファイル内に機密情報を保存する場合は、注意が必要です。

ファイル構造の詳細については、 ローカルファイルシステムでのStreamlitファイルの作成 をご参照ください。

Streamlitアプリのプロジェクト定義の作成

Snowflakeの各Streamlitアプリには、 snowflake.yml プロジェクト定義ファイルを含める必要があります。Streamlitは、プロジェクト定義ファイルごとに1つのアプリケーションに制限されます。

snowflake.yml プロジェクト定義ファイルのサンプルは次のとおりです。

definition_version: 2
entities:
  my_streamlit:
    type: streamlit
    identifier: streamlit_app
    stage: my_streamlit_stage
    query_warehouse: my_streamlit_warehouse
    main_file: streamlit_app.py
    pages_dir: pages/
    external_access_integrations:
      - test_egress
    secrets:
      dummy_secret: "db.schema.dummy_secret"
    imports:
      - "@my_stage/foo.py"
    artifacts:
      - common/hello.py
      - environment.yml
    grants:
      - privilege: USAGE
        role: streamlit_role
Copy

次の表は、Streamlitプロジェクト定義のプロパティについて説明しています。

Streamlitプロジェクトの定義プロパティ

プロパティ

定義

識別子

optional, string

エンティティの任意のSnowflake識別子。この値には次のような形式があります。

  • 文字列識別子テキスト

    identifier: my-streamlit-id
    
    Copy

    引用符で囲まれていない識別子と引用符で囲まれた識別子の両方がサポートされています。引用符で囲まれた識別子を使用するには、 YAML の値に引用符を含めます(例えば ’”My Streamlit Application”’)。

  • オブジェクト

    identifier:
      name: my-streamlit-id
      schema: my-schema # optional
      database: my-db # optional
    
    Copy

    注釈

    schemadatabase を指定し、 name プロパティで完全修飾名(mydb.schema1.my-app など)を使用すると、エラーが発生します。

タイプ

optional, string

streamlit である必要があります。

コメント

optional, string

Streamlitダッシュボードにコメントします。

タイトル

optional, string

Streamlit ダッシュボードの人間が読めるタイトル。

ステージ

optional, string

アプリの成果物が保存されるステージ。デフォルト: なし。

query_warehouse

required, string

アプリをホストするSnowflakeウェアハウス。

main_file

optional, string

Streamlitアプリの エントリポイントファイル。デフォルト: 「streamlit_app.py」。

pages_dir

optional, string

Streamlit pages。デフォルト: 「pages」。

external_access_integrations

オプション, 文字列

この Streamlit アプリケーションコードが外部ネットワークにアクセスするために必要な、 外部アクセス統合 の名前。詳しくは CREATE STREAMLIT のオプションパラメーター をご覧ください。

シークレット

オプション, 辞書

シークレットの名前を変数に代入し、アプリケーションコードでシークレットから情報を取得するときに、変数を使用してシークレットを参照できるようにします。

imports

オプション, 文字列

インポートする以前にアップロードしたファイルのステージとパス。詳しくは CREATE STREAMLIT のオプションパラメーター をご覧ください。

アーティファクト

必須文字列シーケンス

デプロイルートに追加するファイルソースと宛先のペアのリスト。次のアーティファクトプロパティを使用できます。

  • src: Path to the code source file or files.

  • dest: アーティファクトをデプロイするディレクトリへのパス。

    ディレクトリを参照する宛先パスは、 / で終わる必要があります。globパターンの宛先が / で終わらない場合はエラーになります。省略された場合、 dest のデフォルトは src と同じ文字列になります。

    各項目に対して、 dict の代わりに文字列を渡すこともできます。この場合、値は srcdest の両方として扱われます。

src が(globではなく)1つのファイルだけを参照している場合、 dest はターゲット <パス> または <パス/名前> を参照できます。

You can also pass in a string for each item instead of a dict; in that case, the value is treated as both src and dest.

grants

optional, grant sequence

Grants that should be given for the Streamlit app. Each grant must specify the privilege and target role. For more details, see the optional parameters for CREATE STREAMLIT.