MeWrite Docs

Terraform: Could not retrieve the list of available versions for provider

Terraformでプロバイダーが見つからない場合のエラー

概要

Terraformでプロバイダーの取得やバージョン解決に失敗した場合に発生するエラーです。プロバイダーの設定ミス、ネットワーク問題、バージョン制約の不整合などが原因です。

エラーメッセージ

Error: Could not retrieve the list of available versions for provider
hashicorp/aws: could not connect to registry.terraform.io

Error: Failed to query available provider packages
Could not retrieve the list of available versions for provider

Error: Incompatible provider version
Provider registry.terraform.io/hashicorp/aws v5.0.0 does not have a package
available for your current platform

原因

  1. ネットワーク問題: Terraform Registryへの接続失敗
  2. プロバイダー名の誤り: プロバイダー名のタイプミス
  3. バージョン制約: 存在しないバージョンを指定
  4. 初期化忘れ: terraform initを実行していない
  5. プロキシ設定: 企業ネットワークでのプロキシ未設定
  6. ロックファイルの不整合: .terraform.lock.hclの問題

解決策

1. terraform init の実行

1
2
3
4
5
6
7
8
# 初期化
terraform init

# 強制的に再初期化
terraform init -upgrade

# プロバイダーを再ダウンロード
terraform init -reconfigure

2. プロバイダーの正しい設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# versions.tf または providers.tf
terraform {
  required_version = ">= 1.0.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
    google = {
      source  = "hashicorp/google"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

3. バージョン制約の確認

1
2
3
4
5
6
7
8
# 正しいバージョン制約
version = "~> 5.0"     # 5.x(5.0以上、6.0未満)
version = ">= 5.0"     # 5.0以上
version = "= 5.0.0"    # 厳密に5.0.0
version = ">= 4.0, < 6.0"  # 範囲指定

# 利用可能なバージョンを確認
# https://registry.terraform.io/providers/hashicorp/aws/latest

4. ロックファイルの更新

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# ロックファイルを更新
terraform init -upgrade

# プラットフォームを指定してロック
terraform providers lock \
  -platform=linux_amd64 \
  -platform=darwin_amd64 \
  -platform=darwin_arm64

# ロックファイルを削除して再生成
rm .terraform.lock.hcl
terraform init

5. プロキシ設定

1
2
3
4
5
6
7
# 環境変数でプロキシを設定
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1"

# Terraformを実行
terraform init

6. ミラー/キャッシュの設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# ~/.terraformrc または terraform.rc
provider_installation {
  filesystem_mirror {
    path    = "/path/to/providers"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = []
  }
}
1
2
# プロバイダーをミラーにダウンロード
terraform providers mirror /path/to/providers

7. レガシープロバイダーからの移行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 古い書き方(Terraform 0.12以前)
provider "aws" {
  version = "~> 3.0"
  region  = "ap-northeast-1"
}

# 新しい書き方(Terraform 0.13以降)
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

8. サードパーティプロバイダー

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# サードパーティプロバイダーの例
terraform {
  required_providers {
    datadog = {
      source  = "DataDog/datadog"
      version = "~> 3.0"
    }
    cloudflare = {
      source  = "cloudflare/cloudflare"
      version = "~> 4.0"
    }
  }
}

9. ローカルプロバイダー(開発用)

1
2
3
4
5
6
7
# ~/.terraformrc
provider_installation {
  dev_overrides {
    "example.com/myorg/myprovider" = "/path/to/provider/binary"
  }
  direct {}
}

10. 複数プロバイダーの設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 複数リージョン/アカウント
provider "aws" {
  region = "ap-northeast-1"
  alias  = "tokyo"
}

provider "aws" {
  region = "us-east-1"
  alias  = "virginia"
}

# 使用時
resource "aws_instance" "tokyo" {
  provider = aws.tokyo
  # ...
}

resource "aws_instance" "virginia" {
  provider = aws.virginia
  # ...
}

11. デバッグ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 詳細ログを有効化
export TF_LOG=DEBUG
terraform init

# プロバイダーのキャッシュを確認
ls -la ~/.terraform.d/plugins/

# 現在のプロバイダーを確認
terraform providers
terraform version

12. CI/CDでの設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# GitHub Actions
- name: Setup Terraform
  uses: hashicorp/setup-terraform@v3
  with:
    terraform_version: 1.6.0

- name: Terraform Init
  run: terraform init
  env:
    TF_CLI_CONFIG_FILE: ${{ github.workspace }}/.terraformrc

よくあるプロバイダー

プロバイダーSource
AWShashicorp/aws
GCPhashicorp/google
Azurehashicorp/azurerm
Kuberneteshashicorp/kubernetes
Dockerkreuzwerker/docker

よくある間違い

  • terraform initを忘れてterraform planを実行
  • プロバイダー名の大文字小文字を間違える
  • 存在しないバージョンを指定
  • ロックファイルをgitignoreしてチームで不整合

関連エラー

参考リンク

Terraform の他のエラー

最終更新: 2025-12-13