CI/CD と Snowflake CLI の統合¶
Snowflake CLI は CI/CD (継続的インテグレーションと継続的デリバリー) システムと GitHub アクション などの一般的なフレームワークを統合し、 SQL、Snowpark、Native Apps、Notebooks の Snowflake ワークフローを効率的に自動化します。
次の図は、 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-action リポジトリをご参照ください。
Snowflake CLI アクションの使用¶
Githubアクションは、CI/CD ワークフローに Snowflake CLI をインストールして使用するプロセスを合理化します。CLI は分離された方法でインストールされ、プロジェクトの依存関係と競合しないようにします。~/.snowflake/ ディレクトリ内に入力構成ファイルが自動的に設定されます。
アクションは、Snowflake環境内での Snowflake Native Apps のデプロイやSnowparkスクリプトの実行など、Snowflakeの CLI タスクの自動化を可能にします。
入力パラメーター¶
Snowflake CLI アクションは、Github ワークフロー YAML ファイルから以下の入力を使用します。<repo-name>/.github/workflows/my-workflow.yaml:
cli-version:3.11.0などの指定されたSnowflake CLI バージョン。提供されていない場合は、Snowflake CLI の最新バージョンが使用されます。custom-github-ref:Githubリポジトリ内のブランチ、タグ、コミットから直接インストールしたい Snowflake CLI。注釈
cli-version`および :codenowrap:`custom-github-refの両方を一緒に使用することはできません。これらのパラメーターのうち1つだけを指定します。default-config-file-path:リポジトリ内の構成ファイル(config.toml)へのパス。パスは、リポジトリのルートからの相対パスにする必要があります。仮接続(-xオプション)が使用される場合は構成ファイルは必要ありません。詳細については、:doc:`/developer-guide/snowflake-cli/connecting/configure-connections`をご参照ください。use-oidc:OIDC 認証を有効にするブールフラグ。trueに設定した場合、アクションはSnowflakeでの認証に GitHubの OIDC トークンを使用して CLI を構成するため、秘密キーをシークレットとして保存する必要がなくなります。デフォルトは:codenowrap:falseです。
GitHub ブランチ または タグから Snowflake CLI をインストールする¶
Snowflake CLI を GitHub リポジトリ内の特定のブランチ、タグ、コミットからインストールする(たとえば、リリースされていない機能やフォークをテストする)には、以下の構成を使用します。
他の :ref:`入力パラメーター <label-cli_cicd_inputs>`を含めることもできます。
この機能はsnowflake-cli-actionバージョン1.6以降で利用できます。
CI/CD ワークフローでアクションを安全に構成します。¶
次のいずれかのメソッドを使用して、CI/CD ワークフローでアクションを安全に構成できます。
ワークロードIDフェデレーション(WIF)OpenID 接続(OIDC)認証を使用する¶
注釈
WIF OIDC 認証には Snowflake CLI バージョン3.11.0以降が必要です。
WIF OIDC 認証は、秘密キーをシークレットとして保存することなく、Snowflakeで認証する安全で最新の方法を提供します。このアプローチでは GitHubの OIDC(OpenID接続)トークンを使用してSnowflakeで認証します。
WIFOIDC 認証を設定するには、以下のステップに従います。
OIDC ワークロードIDタイプを持つサービスユーザーを設定することによって WIFOIDC を構成します。
注釈
デフォルトでは、サブジェクトは :codenowrap:`repo:<repository-owner/repository-name>:environment:<environment>`のようになります。
サブジェクトの生成を簡素化するには、
ghコマンドを使用します。この場合の:codenowrap:<environment_name>は、次の例に示すように、リポジトリ設定で定義された環境です。
サブジェクトのカスタマイズの詳細については、GitHub の OpenID 接続 をご参照ください。
Snowflakeアカウント識別子を GitHub シークレットに保管します。詳細については、 GitHub Actions ドキュメンテーション をご参照ください。
表示のように、GitHub ワークフローの YAML ファイル内で Snowflake CLI アクションを構成します。
Snowflakeアカウントの WIFOIDC 認証の設定と GitHubOIDC プロバイダーの構成に関する詳細については、ワークロードIDフェデレーション をご参照ください。
秘密キー認証を使用する¶
秘密キー認証を使用するには、Snowflakeの秘密キーを GitHub シークレットに保存して、それを使用するための Snowflake CLI アクションを構成する必要があります。
Snowflakeの秘密キーを GitHub シークレットに保存します。
詳細については、 GitHub Actions ドキュメンテーション をご参照ください。
表示のように、GitHub ワークフローの YAML ファイル内で Snowflake CLI アクションを構成します。
接続の定義¶
GitHub アクションを定義して、仮接続または構成ファイルで定義された接続で Snowflake に接続することができます。接続管理の詳細については、 Snowflake接続の管理 を参照してください。
仮接続の使用¶
仮接続の詳細情報については、 仮接続の使用 を参照してください。
仮接続用のSnowflake認証情報をセットアップするには、以下の手順に従ってください。
シークレットを GitHub ワークフローの環境変数にマッピングします。次のように、
SNOWFLAKE_<キー>=<value>の形式にします。Snowflake CLI アクションを構成します。
Snowflake CLI の最新バージョンを使用している場合は、
cli-versionパラメーターを含める必要はありません。次の例では、Snowflake CLI バージョン3.11.0を使用するよう、具体的にアクションに指示しています。オプション:秘密キーが暗号化されている場合、パスフレーズを設定するには、秘密キーパスフレーズに PRIVATE_KEY_PASSPHRASE 環境変数を設定します。Snowflakeは、このパスフレーズを使用して秘密キーを復号化します。例:
秘密キーの代わりにパスワードを使用するには、次のように
SNOWFLAKE_AUTHENTICATOR環境変数の設定を解除し、SNOWFLAKE_PASSWORD環境変数を追加します。注釈
パスワードと MFA を使用する際の利便性を高めるため、Snowflake では MFA キャッシュを構成する ことを推奨しています。
Snowflake の認証情報を環境変数にセットする方法については Snowflake認証情報に環境変数を使用する を、 GitHub CI/CD ワークフロー内で環境変数を定義する方法については 1 つのワークフローに環境変数を定義する方法 を参照してください。
仮接続で実行する
snowコマンドを次のように追加します。
次の例は、 <repo-name>/.github/workflows/my-workflow.yaml ファイルが完成したサンプルです。
アクションがSnowflakeに正常に接続できることを確認したら、 snow notebook create や snow git execute のように、 Snowflake CLI コマンドを追加します。サポートされているコマンドの情報については、 Snowflake CLI コマンドリファレンス を参照してください。
構成ファイルの使用¶
接続の定義の詳細については、 コネクションの定義 を参照してください。
特定の接続用にSnowflake認証情報をセットアップするには、以下の手順に従ってください。
表示のように、空の構成接続を持つGitリポジトリのルートにある:file:
config.tomlファイルを作成します。このファイルはテンプレートとして機能し、実際の認証情報 を含むべきではありません。
シークレットを GitHub ワークフローの環境変数にマッピングします。次のように、
SNOWFLAKE_<キー>=<value>の形式にします。Snowflake CLI アクションを構成します。
Snowflake CLI の最新バージョンを使用している場合は、
cli-versionパラメーターを含める必要はありません。次の例では、目的のバージョンとデフォルト構成ファイルの名前を指定します。オプション:秘密キーが暗号化されている場合、パスフレーズを設定するには、秘密キーパスフレーズに PRIVATE_KEY_PASSPHRASE 環境変数を設定します。Snowflakeは、このパスフレーズを使用して秘密キーを復号化します。例:
秘密キーの代わりにパスワードを使用するには、次のように
SNOWFLAKE_AUTHENTICATOR環境変数の設定を解除し、SNOWFLAKE_PASSWORD環境変数を追加します。注釈
パスワードと MFA を使用する際の利便性を高めるため、Snowflake では MFA キャッシュを構成する ことを推奨しています。
名前付き接続で実行する
snowコマンドを、次のように追加します。
次の例では、Git リポジトリ内のサンプル config.toml ファイルと、完成したサンプル <リポジトリ名>/.github/workflows/my-workflow.yaml ファイルを示します。
サンプル
config.tomlファイル:サンプルGitワークフローファイル:
アクションがSnowflakeに正常に接続できることを確認したら、 snow notebook create や snow git execute のように、 Snowflake CLI コマンドを追加します。サポートされているコマンドの情報については、 Snowflake CLI コマンドリファレンス を参照してください。