ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

terraformでDataDogリソースを管理したかったのに403 Forbiddenと言われたとき

現象

terraformでdatadogプロバイダーを使ってdatadogリソースを管理しようとしていたのですが、apiキーもappキーも正しいものを使ってるはずなのに、403が出てこまりました。

Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: 403 Forbidden
│ 
│   with module.datadog.provider["registry.terraform.io/datadog/datadog"],
│   on modules/datadog/provider.tf line 19, in provider "datadog":
│   19: provider "datadog" {
│ 
╵

原因

当初こんな感じに設定していました。api_urlの指定をしてませんでした。

provider "datadog" {
  api_key = var.datadog_api_key
  app_key = var.datadog_app_key
}

providerのソースコードを読んでもデフォルト値が分からないのですが、おそらく https://app.datadoghq.com の値がセットされてしまってるのかなと推定しています。 今回東京リージョン(AP1)を使っています。東京リージョンのURLは https://ap1.datadoghq.com なのでこの値api_urlを明示的にセットしてあげることで、planが通るようになりました。

variable "datadog_api_url" {
  type    = string
  default = "https://ap1.datadoghq.com"
}


provider "datadog" {
  api_key = var.datadog_api_key
  app_key = var.datadog_app_key
  api_url = var.datadog_api_url
}

参考