Snow CLI で Streamlit App を deploy

Snow CLI で Streamlit App を deploy | Tableau-id Press -タブロイド-
8

はじめに

今回はローカルで作成した Streamlit in Snowflake の ソースを、SnowflakeにDeployする方法をご紹介いたします。
snowcli を使います。下記のgithubのソースを読みました。
https://github.com/Snowflake-Labs/snowflake-cli
※以下、環境はwindowsです。

1.ソース一式の準備 ※上記githubより

まずはソースの準備をしましょう。フォルダを作成し(これがプロジェクトフォルダになる)メインソース、構成ファイル、envファイルは プロジェクトフォルダの直下に置きます。それ以外のファイルは構成ファイルに定義した内容に沿って配置します。

1.1  ./streamlit_app.py メインソース

import streamlit as st
from common.hello import say_hello

st.title(f"Example streamlit app naonao. {say_hello()}")

1.2  ./snowflake.yml  構成ファイル

デフォルトがこの名前です。違うファイルを使う場合は snow コマンドで指定します。

definition_version: 1
streamlit:
 name: streamlit_app
 stage: my_streamlit_stage
 query_warehouse: xs
 main_file: streamlit_app.py
 env_file: environment.yml
 pages_dir: pages/
 additional_source_files:
 - common/hello.py

1.3  ./environment.yml

デフォルトがこの名前です。違うファイルを使う場合は snow コマンドで指定します。

name: sf_env
channels:
 - snowflake
dependencies:
 - streamlit
 - snowflake-snowpark-python

1.4  ./pages/my_page.py

今回は複数ページ構成です。構成ファイルにpages_dir: pages/と定義したファイルです。

import streamlit as st

st.title("Example page")

1.5  ./common/hello.py

構成ファイルでadditional_source_files:- common/hello.pyと定義したファイルです。

def say_hello():
 return "Hello!"

ここまでで、ソース一式の準備ができました。

2.Snowflake CLIでデプロイ

Snowflake CLIを ローカルマシンにインストールして、先ほど作成したソース一式をSnowflake のステージに展開し、StreamlitAPPを作成しましょう。

2.1.Snowflake CLI をインストール(Python 3.8 以上が必要)

pip install snowflake-cli-labs

2.2.ちゃんと入ったか確認

snow streamlit deploy –help

snow streamlit deploy – -help

以下のように表示されたらOKです。

2.3.接続情報を設定

snow connection add

以下の事を聞かれるので、ちゃんと答えましょう。(間違っても後から修正できるので大丈夫です)
Name for this connection: 例) snowcli_test ← 接続名。これを後で指定します
Snowflake account name: 例) xxxxxxx.ap-northeast-1.aws
Snowflake username: 例) mimura
Snowflake password [optional]: 例) XXXXXXXX
Role for the connection [optional]: 例) sysadmin
Warehouse for the connection [optional]: 例) xs
Database for the connection [optional]: 例) xxdb
Schema for the connection [optional]: 例) public
Connection host [optional]: ※指定しなくてもOK
Connection port [optional]: ※指定しなくてもOK
Snowflake region [optional]: ※指定しなくてもOK
Authentication method [optional]: ※指定しなくてもOK
Path to private key file [optional]: ※指定しなくてもOK

ここまで入力すると、インストールしたパスの配下にconfig.tomlが作成されます。

Wrote new connection snowcli_test to C:\Users\XXXXXX\AppData\Local\snowflake\config.toml

入力内容を変更する場合は、上記のファイルを修正しましょう。

2.4.接続確認

snow connection test –connection "snowcli_test"

snow connection test – -connection “snowcli_test”

"snowcli_test" は 作成した接続名です(ダブルコーテーションで囲ってね)

設定したkeyとvalueが表示されます。Status の value が OKでない場合は、どこか違っていますので確認してください。

2.5.デプロイ

Snowflake の ステージに上げて、アプリの作成を行います。-p の後に プロジェクトフォルダを指定します。今回はプロジェクトフォルダで作業していたので、.(自分自身)です。–connection の後に config.toml に記載した 接続名を指定します。

snow streamlit deploy -p . – -connection “snowcli_test”

以下のように表示されたら成功です。

3.Snowflakeで確認

Snowflake側で確認してみましょう。

3.1. ステージの確認

ステージにすべてのソースが上がっているか、確認しましょう。

この方法だと、ステージにちゃんと名前で上がるのが嬉しいですね。Snowsightで直接APPを作ると IDのような数値&英字でステージ作成されちゃうので、どれがどれだかわからなくなってしまう・・・

3.2. Streamlit APPの確認

次にStreamlit APPが出来ているか確認します。

3.3. Streamlit APPの起動

では走らせてみましょう。

走った♬手元にソースコードがあると、バージョン管理もできるし、好みのエディタで作業できるので助かりますね。

おわりに

truestarでは、Snowflakeのアプリ開発だけではなく、検討、導入支援や環境構築まで幅広くサポート可能です。

Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらから相談ください!

これまでのSnowflakeに関する記事はこちら