Snowflake CLIをインストールしてキーペア認証でSnowflakeへ接続してみた
さがらです。
Snowflake CLIをインストールしてキーペア認証でSnowflakeへ接続してみたので、その内容を本記事でまとめてみます。
Snowflake CLIとは
Snowflake CLIは、Snowflake上の操作をCLIで行うことが出来る開発者向けに提供されているOSSのCLIツールです。
具体的には、以下のことが可能です。(各項目をクリックすることで公式Docにリンクします。)
- Streamlit in Snowflake、Snowflake Native App Framework、Snowpark Container Servicesを用いたアプリケーションのデプロイや管理
- Snowparkを用いたUDF、ストアドプロシージャ、カスタムパッケージのデプロイや管理
- 各種Snowflake上のオブジェクトの作成
- ステージの管理
- Snowflake上のGitリポジトリの管理
- SQL実行
検証環境
- Ubuntu 24.04LTS(WSL2上で動作)
Snowflake CLIのインストール
まず、今回はDebian系のLinuxディストリビューションであるUbuntuを使用しているため、下記からsnowflake-cli-3. 2.1.x86_64.deb
をダウンロードします。
※余談ですが、3.2.1より前のバージョンだとWSL2上のUbunutuでSnowflake CLIのコマンドが動作しない現象が確認されています。Snowflake社のサポートに起票して、3.2.1でこの現象が改修されたと伺っています。
wget https://sfc-repo.snowflakecomputing.com/snowflake-cli/linux_x86_64/3.2.1/snowflake-cli-3.
2.1.x86_64.deb
次に、aptコマンドでインストールします。
sudo apt install ./snowflake-cli-3.2.1.x86_64.deb
インストールできたかどうかを確認するため、下記のコマンドを実行します。下図のように表示されたら準備完了です!
snow --help
キーペアの作成とSnowflakeユーザーに公開鍵を割り当て
ローカルのUbuntu上で以下のコマンドを実行してキーペアを生成します。(Snowflake用のキーペアとわかりやすくするために、.snowflake
ディレクトリを作っています。)
mkdir -p ~/.snowflake/
cd ~/.snowflake/
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
chmod 400 rsa_key.p8
chmod 400 rsa_key.pub
次に、Snowflake上でキーペア認証で使用するユーザーに対して公開鍵(rsa_key.pub)の値を割り当てます。
alter user <ユーザー名> set rsa_public_key = 'MII..';
正しくキーペアが設定できたかどうかを確認したい際は、こちらのドキュメントに沿って確認が可能です。
Snowflake CLIでの接続設定
これまでの手順で準備が出来たので、Snowflake CLIで接続設定をしていきます。
snow connection add
に対して以下のオプションを追加して実行します。
snow connection add --connection-name <任意の名前> --authenticator SNOWFLAKE_JWT --private-key-file ~/.snowflake/rsa_key.p8
下図のようにアカウント名やユーザー名など聞かれるため、入力してEnterを繰り返します。(roleとwarehouse含め、空白のところは必須項目ではありません。)
これにより、接続情報を保持するconfig.toml
が作られます。
この後、接続テストを下記のコマンドで実行可能です。これを実行すると下図のように表示されます。
snow connection test -c <作成したconnection-name>
また、接続先のデフォルトを定義することで、-c
オプション不要で接続することも可能です。
snow connection set-default <作成したconnection-name>
最後に
Snowflake CLIをインストールしてキーペア認証でSnowflakeへ接続してみたので、その内容をまとめてみました。
今後アプリ開発やSnowflakeのDevOpsなどでSnowflake CLIが必須となってくると思いますので、参考になると嬉しいです!