[小ネタ]dbt Projects on Snowflakeでセカンダリロールを無効化している場合にGitHub Actions経由でdbt Projectをデプロイできるか確かめてみた
さがらです。
小ネタですが、dbt Projects on Snowflakeでセカンダリロールを無効化している場合にGitHub Actions経由でdbt Projectをデプロイできるか確かめてみたので、その内容についてまとめてみます。
背景
先日dbt Project on Snowflakeの初期セットアップ記事を書きましたが、「セカンダリロールを無効化している」あるいは「セカンダリロールの対象ロールを制限したセッションポリシーが適用されている」と、Workspaceからdbt Projectをスキーマオブジェクトとしてデプロイできない事象に遭遇しました。
※具体的には下図のようにパーソナルデータベースにアクセスできないようなことが書かれたエラーが表示されます。

こちらについて、以前下記のブログで試したGitHub Actions経由のデプロイ方法ならば、パーソナルデータベースを介さないためセカンダリロールを無効化していてもデプロイできるのでは…と感じたので試してみます。
やってみた
※以下やってみたことの詳細ですが、結論としては、セカンダリロールを無効化していてもGitHub Actions経由であれば無事にデプロイ出来ました!
まず、利用するSnonwflakeユーザーのセカンダリロールを無効化します。
-- セカンダリロール無効化
ALTER USER <GitHub Actionsで使用するユーザー名>
SET DEFAULT_SECONDARY_ROLES = ();
-- 上述のクエリで無効化してから再ログイン後、無効化していることを確認
SELECT CURRENT_SECONDARY_ROLES();

この上で、以前試した以下のブログの内容でGitHub Actions周りのセットアップを行います。
GitHub Actions周りのセットアップ後、ブランチを切って適当にmodelを追加してプルリクエストを発行してmainブランチにマージした後、ワークフローの動作確認をしてみます。



mainブランチへのマージ後、GitHub Actionsのワークフローが動き、dbt Projectのスキーマオブジェクトとしてのデプロイが成功しました!


念の為、デプロイしたdbt Projectをスキーマオブジェクトを確認してみると、新規開発したmodelも登録されていました。

デプロイしたdbt Projectを手動実行すると、新規開発したmodelが実行されてテーブルが無事に作られました。



最後に
簡素な内容ではありましたが、dbt Projects on Snowflakeでセカンダリロールを無効化している場合にGitHub Actions経由でdbt Projectをデプロイできるか確かめてみたので、内容をまとめてみました。
セカンダリロールを有効化することが厳しい環境の方も多いと思いますので、その際はGitHub Actions経由でのデプロイをご検討ください!








