🥳

terraform-provider-snowflake の region でハマったのでメモ

2021/04/25に公開


記事の内容3行で

  1. terraform-provider-snowflakeの
  2. Regionが
  3. 異なったりいらなかったり

事象

terraform-provider-snowflake を使用しようとしてハマったのでメモ
結論は region の項目には使用しているクラウドやリージョン情報ではなく、あくまでWebコンソールのURLが適切になるような region を設定しよう、という話でした。

Exampleにあるように

provider.tf
provider snowflake {
  // required
  username = "..."
  account  = "..."
  region   = "..."

  // optional, at exactly one must be set
  password           = "..."
  oauth_access_token = "..."
  private_key_path   = "..."

  // optional
  role = "..."
}

region が必須項目になっていて、またSnowflakeの利用環境は

SELECT CURRENT_REGION()

で調べられるため、AWS東京リージョンをいつものように使用していたので ap-northeast-1 を迷わず provider に登録して terraform の実行をした。
https://docs.snowflake.com/en/user-guide/intro-regions.html
すると下記エラーが返ってきた。

 Error: Post "https://XXXXXXXX.ap-northeast-1.snowflakecomputing.com:443/session/v1/login-request?requestId=9ba309bd-9973-408d-b325-df6569dcdbab&request_guid=XXXXXXXX&roleName=ACCOUNTADMIN": x509: certificate is valid for *.us-west-2.snowflakecomputing.com, *.snowflakecomputing.com, *.global.snowflakecomputing.com, *.prod1.us-west-2.aws.snowflakecomputing.com, *.prod2.us-west-2.aws.snowflakecomputing.com, *.us-west-2.aws.snowflakecomputing.com, not XXXXXXXX.ap-northeast-1.snowflakecomputing.com

対応

今回使用していたアカウントは、 ORGADMIN ロールを用いて払い出された子アカウントであったためか、WebコンソールのURLは https://アカウント名.snowflakecomputing.com/console でした。
アカウント名と snowflakecomputing.com の間の名前空間がないもので、それなのにエラー文を見ると ap-northeast-1 へPostしようとしていた。
そのため試しに region を空文字列へ変更したところ上手くterraformが実行された。

また、他の親アカウントでも試してみたところ、WebコンソールのURLが https://アカウント名.ap-northeast-1.aws.snowflakecomputing.com/console となっていた場合には regionap-northeast-1.aws まで入れると上手く動作した。

SELECT CURRENT_VERSION()

で出てくるのは

AWS_AP_NORTHEAST_1

とかだったりしたので、若干の罠でした。

Discussion