SnowflakeのTerraformでの操作方法

ERPデータのETL後のデータのストア先としてSnowflakeが一つの選択肢になります。備忘録的に構築方法を記載します。

見にくいので、こちらをどうぞ

Terraformのインストール

Ubuntu想定

brewでのインストールが簡単なので、Ubuntuにbrewをインストールしておく。


brew install tfenv

tfenv install latest

tfenv use latest

確認

terraform -v


mkdirでフォルダ作成、provide.tfの作成

terraform {
required_version = “>= 1.9”
required_providers {
snowflake = {
source = “snowflake-Labs/snowflake”
version = “0.42.1”
}
}
}
provider “snowflake” {
region = “japan-east.azure”
}

環境変数追加

export SNOWFLAKE_ACCOUNT=”AB12345″ # account locator

export SNOWFLAKE_USER=”TERRAFORM_USER”

export SNOWFLAKE_PASSWORD=”×××××××××××××”

export SNOWFLAKE_ROLE=”TERRAFORM”

export SNOWFLAKE_WAREHOUSE=”TERRAFORM_WH”

Snowflake上で下記実行によりAccountとリージョンを得ることができる。

ただし、Regionの書き換えは必要。

SELECT
current_account() as YOUR_ACCOUNT_LOCATOR,
current_region() as YOUR_SNOWFLAKE_REGION_ID;

Exportの環境変数をSnowflakeで追加

create user terraform_user
password = ‘××××××××××’;

create role terraform;

grant role terraform to user terraform_user;
grant role securityadmin to role terraform;
grant role sysadmin to role terraform;

create or replace warehouse terraform_wh
 warehouse_size=XSMALL
 auto_resume=TRUE
 auto_suspend=60 — (1分操作がないと停止)
 initially_suspended=TRUE
 statement_timeout_in_seconds=300 — 60min
 comment=’For test terraform.’
;

grant USAGE on warehouse terraform_wh to role terraform;
grant USAGE on warehouse terraform_wh to role securityadmin;
grant USAGE on warehouse terraform_wh to role sysadmin;
grant USAGE on warehouse terraform_wh to role useradmin;

別ファイルにやりたいことを書く。こちらの例は、DBとウェアハウスの作成。

resource “snowflake_database” “db” {
name = “TF_DEMO_DB”
}

resource “snowflake_warehouse” “warehouse” {
name = “TF_DEMO_WH”
warehouse_size = “large”
auto_suspend = 60
}

ubuntuで下記の実行

terraform init – 配置されたファイルの読み込み

terraform plan – Snowflake側でどのような操作が行われるか確認してくれる

terraform apply – 実行


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です