⚠️
Terraform "Warning: Provider aws is undefined"の対応方法
はじめに
terraform plan
をしたときのエラー発生箇所を調べていたらWarningにも気付いたため、対応してみました。
環境
- GitHub Actions
- Terraform >= v0.13
-
hashicorp/setup-terraform@v1
を利用
-
サンプルコード
今回のWarningを発生させる最小限のサンプルコードを含むリポジトリを作成しました。
$ tree
.
├── main.tf
├── modules
│ └── guardduty
│ └── main.tf
└── providers.tf
Warningの内容
$ terraform init
Initializing modules...
- tokyo in modules/guardduty
- virginia in modules/guardduty
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.38.0...
- Installed hashicorp/aws v3.38.0 (signed by HashiCorp)
...
╷
│ Warning: Provider aws is undefined
│
│ on main.tf line 8, in module "virginia":
│ 8: aws = aws.us-east-1
│
│ Module module.virginia does not declare a provider named aws.
│ If you wish to specify a provider configuration for the module, add an entry for aws in the required_providers block within the module.
│
│ (and one more similar warning elsewhere)
╵
...
原因
Terraformのmodule機能を利用する際、module側にrequired_providers
を定義していないとWarningが発生します。
対応方法
module側にrequired_providers
を定義します。
modules/guardduty/providers.tf
terraform {
required_version = ">= 0.13.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
参考
Discussion