⚠️

Terraform "Warning: Provider aws is undefined"の対応方法

1 min read

はじめに

terraform planをしたときのエラー発生箇所を調べていたらWarningにも気付いたため、対応してみました。

環境

  • GitHub Actions
  • Terraform >= v0.13
    • hashicorp/setup-terraform@v1を利用

サンプルコード

今回のWarningを発生させる最小限のサンプルコードを含むリポジトリを作成しました。

https://github.com/oke-py/zenn-sample-048ffb5135c4b9ece974
$ 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"
    }
  }
}

参考

https://www.terraform.io/docs/language/providers/requirements.html