現象
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
}