CI/CD と Snowflake CLI の統合¶
Snowflake CLI は CI/CD (継続的インテグレーションと継続的デリバリー) システムと GitHub アクション などの一般的なフレームワークを統合し、 SQL、Snowpark、Native Apps、Notebooks の Snowflake ワークフローを効率的に自動化します。
注釈
今後のリリースでは、JenkinsとAzure DevOps をサポートする予定です。
次の図は、 Snowflake CLI における典型的な CI/CD ワークフローを示しています。

CI/CD ワークフローのステップ¶
ストア: リモートのGitリポジトリを構成して、Snowflakeファイルを安全に管理します。
コード: IDE またはSnowsightを使用して、お好みに合わせてSnowflakeコードを開発します。
インストール: Snowflake CLI を インストール し、お好みのプロバイダー CI/CD (GitHub アクションなど) をプロビジョニングします。
デプロイ: Snowflake CLI と選択した CI/CD ツールを組み合わせてデプロイを自動化します。
モニター: Snowflake Trail を使用して Snowflake のコードとワークフローのパフォーマンスを追跡し、リアルタイムの洞察を得ます。
反復: 継続的な改善のために、プロジェクトに小容量のアップデートを頻繁に適用します。小容量の変更は、管理を簡素化し、必要に応じてロールバックします。
CI/CD と GitHub アクション¶
Snowflake CLI アクションは、 Snowflake CLI を CI/CD パイプラインに統合するために設計された GitHub アクションです。GitHub ワークフロー内で Snowflake CLI コマンドの実行を自動化できます。
Snowflake CLI アクションの使用¶
Snowflake CLI Github Actionsは、 CI/CD のワークフローで Snowflake CLI をインストールして使用するプロセスを合理化します。CLI は、あなたのプロジェクトの依存関係と衝突しないように、分離された方法でインストールされます。入力構成ファイルは自動的に ~/.snowflake/
ディレクトリにセットアップされます。
入力パラメーター¶
Snowflake CLI アクションは、Github ワークフロー YAML ファイルから以下の入力を使用します。 <repo-name>/.github/workflows/my-workflow.yaml
:
cli-version
: 指定された Snowflake CLI バージョン、例えば3.6.0
。プロバイダーが提供されない場合は、 Snowflake CLI の最新バージョンが使用されます。default-config-file-path
: リポジトリの構成ファイル(config.toml
)へのパス。パスはリポジトリのルートからの相対パスでなければなりません。仮接続 (-x
オプション)を使用する場合、構成ファイルは必要ありません。
CI/CD ワークフローでアクションを安全に構成します。¶
Githubアクションを使用するには、次のようにする必要があります:
秘密キーを生成します。詳細については、 キーペア認証とキーペアローテーション をご参照ください。
アカウント、秘密キー、パスフレーズなどの認証情報を GitHub secret に保存します。詳細については、 GitHub Actions ドキュメンテーション をご参照ください。
接続の定義¶
GitHub アクションを定義して、仮接続または構成ファイルで定義された接続で Snowflake に接続することができます。接続管理の詳細については、 Snowflake接続の管理 を参照してください。
仮接続の使用¶
仮接続の詳細情報については、 仮接続の使用 を参照してください。
仮接続用のSnowflake認証情報をセットアップするには、以下の手順に従ってください。
シークレットを GitHub ワークフローの環境変数にマッピングします。次のように、
SNOWFLAKE_<キー>=<value>
の形式にします。env: SNOWFLAKE_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
- Snowflake CLI アクションを構成します。
最新バージョンの Snowflake CLI を使用する場合は、
cli-version
パラメーターを含める必要はありません。次の例では、 Snowflake CLI バージョン3.6.0を使うようにアクションに指示します。- uses: snowflakedb/snowflake-cli-action@v1.5 with: cli-version: "3.6.0"
#.オプション: 秘密キーが暗号化されている場合は、パスフレーズを設定するために、 PRIVATE_KEY_PASSPHRASE 環境変数に秘密キーのパスフレーズをセットします。Snowflakeはこのパスフレーズを使って秘密キーを復号化します。例:
- name: Execute Snowflake CLI command env: PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }}秘密キーの代わりにパスワードを使用するには、次のように
SNOWFLAKE_AUTHENTICATOR
環境変数の設定を解除し、SNOWFLAKE_PASSWORD
環境変数を追加します。- name: Execute Snowflake CLI command env: SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}注釈
パスワードと MFA を使用する際の利便性を高めるため、Snowflake では MFA キャッシュを構成する ことを推奨しています。
Snowflake の認証情報を環境変数にセットする方法については Snowflake認証情報に環境変数を使用する を、 GitHub CI/CD ワークフロー内で環境変数を定義する方法については 1 つのワークフローに環境変数を定義する方法 を参照してください。
仮接続で実行する
snow
コマンドを次のように追加します。run: | snow --version snow connection test --temporary-connection
次の例は、 <repo-name>/.github/workflows/my-workflow.yaml
ファイルが完成したサンプルです。
name: deploy
on: [push]
jobs:
version:
name: "Check Snowflake CLI version"
runs-on: ubuntu-latest
steps:
# Snowflake CLI installation
- uses: snowflakedb/snowflake-cli-action@v1.5
# Use the CLI
- name: Execute Snowflake CLI command
env:
SNOWFLAKE_AUTHENTICATOR: SNOWFLAKE_JWT
SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }}
SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
SNOWFLAKE_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }}
PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }} # Passphrase is only necessary if private key is encrypted.
run: |
snow --help
snow connection test -x
アクションがSnowflakeに正常に接続できることを確認したら、 snow notebook create
や snow git execute
のように、 Snowflake CLI コマンドを追加します。サポートされているコマンドの情報については、 Snowflake CLI コマンドリファレンス を参照してください。
構成ファイルの使用¶
接続の定義の詳細については、 コネクションの定義 を参照してください。
特定の接続用にSnowflake認証情報をセットアップするには、以下の手順に従ってください。
Gitリポジトリのルートにconfig.tomlファイルを作成し、空の構成接続を作成します。
default_connection_name = "myconnection" [connections.myconnection]
このファイルはテンプレートとして機能し、実際の認証情報 を含むべきではありません。
シークレットを GitHub ワークフローの環境変数にマッピングします。次のように、
SNOWFLAKE_<キー>=<value>
の形式にします。env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
#.Snowflake CLI アクションを構成します。最新バージョンの Snowflake CLI を使用する場合は、 cli-version
パラメーターを含める必要はありません。次の例では、希望するバージョンとデフォルト構成ファイル名を指定します。
- uses: snowflakedb/snowflake-cli-action@v1.5 with: cli-version: "3.6.0" default-config-file-path: "config.toml"
#.オプション: 秘密キーが暗号化されている場合は、パスフレーズを設定するために、 PRIVATE_KEY_PASSPHRASE 環境変数に秘密キーのパスフレーズをセットします。Snowflakeはこのパスフレーズを使って秘密キーを復号化します。例:
- name: Execute Snowflake CLI command env: PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }}秘密キーの代わりにパスワードを使用するには、次のように
SNOWFLAKE_AUTHENTICATOR
環境変数の設定を解除し、SNOWFLAKE_PASSWORD
環境変数を追加します。- name: Execute Snowflake CLI command env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}注釈
パスワードと MFA を使用する際の利便性を高めるため、Snowflake では MFA キャッシュを構成する ことを推奨しています。
図のように、名前付き接続で実行したい snow コマンドを追加します。
run: | snow --version snow connection test
次の例では、Git リポジトリ内のサンプル config.toml
ファイルと、完成したサンプル <リポジトリ名>/.github/workflows/my-workflow.yaml
ファイルを示します。
サンプル
config.toml
ファイル:default_connection_name = "myconnection" [connections.myconnection]
サンプルGitワークフローファイル:
name: deploy on: [push] jobs: version: name: "Check Snowflake CLI version" runs-on: ubuntu-latest steps: # Checkout step is necessary if you want to use a config file from your repo - name: Checkout repo uses: actions/checkout@v4 with: persist-credentials: false # Snowflake CLI installation - uses: snowflakedb/snowflake-cli-action@v1.5 with: default-config-file-path: "config.toml" # Use the CLI - name: Execute Snowflake CLI command env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_AUTHENTICATOR: SNOWFLAKE_JWT SNOWFLAKE_CONNECTIONS_MYCONNECTION_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }} #Passphrase is only necessary if private key is encrypted. run: | snow --help snow connection test
アクションがSnowflakeに正常に接続できることを確認したら、 snow notebook create
や snow git execute
のように、 Snowflake CLI コマンドを追加します。サポートされているコマンドの情報については、 Snowflake CLI コマンドリファレンス を参照してください。