【Terraform】 no available releases match the given constraints エラーを解決する

「指定された制約 ( `>= 2.23.0, >= 3.64.0, ~> 3.73, >= 5.20.0` ) に一致する利用可能なリリースがありません」 というエラー

```bash
$ terraform init

... 略 ...
╷
│ Error: Failed to query available provider packages
│ 
│ Could not retrieve the list of available versions for provider hashicorp/aws: 
| no available releases match the given constraints >= 2.23.0, >= 3.64.0, ~> 3.73,
│ >= 5.20.0
╵
```

このエラーは、以下のように制約を満たすプロバイダのバージョンが存在しない状況で発生します。

1. `2.23.0` 以降のバージョン
1. `3.64.0` 以降のバージョン
1. `3.73` 以上 `4.0` 未満のバージョン
1. `5.20.0` 以降のバージョン


この不整合を解決するには、利用しているモジュールが依存しているプロバイダのバージョンを確認し、制約を満たすようにモジュールのバージョンを調整していきます。

※ ちなみに今回エラーが起こっているプロバイダは `hashicorp/aws` です。

```bash
 $ terraform providers

Providers required by configuration:
.
├── provider[registry.terraform.io/hashicorp/aws] ~> 3.73
├── provider[registry.terraform.io/hashicorp/null]
├── provider[registry.terraform.io/hashicorp/tls]
├── provider[registry.terraform.io/hashicorp/kubernetes] ~> 2.5.0
├── provider[registry.terraform.io/hashicorp/helm] ~> 2.6.0
├── module.eks
│   ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│   ├── provider[registry.terraform.io/hashicorp/tls] >= 2.2.0
│   ├── module.eks_managed_node_group
│   │   ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│   │   ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│   │   └── module.user_data
│   │       └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│   ├── module.fargate_profile
│   │   └── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│   └── module.self_managed_node_group
│       ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│       ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│       └── module.user_data
│           └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
├── module.iam_assumable_role_admin
│   └── provider[registry.terraform.io/hashicorp/aws] >= 2.23.0
└── module.vpc
    └── provider[registry.terraform.io/hashicorp/aws] >= 5.20.0
```

プロバイダの依存リストを見ると `module.vpc` が `>= 5.20.0` に依存しており、これが `~> 3.73` と不整合を起こしているようです。
今回は `module.vpc` で利用している `terraform-aws-modules/vpc/aw` のバージョンを下げることで、不整合を解決してみます。


```vpc.tf
module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
  version = "~> 3.0"  // バージョン指定を追加

  name = "eks-vpc"
  cidr = "10.0.0.0/16"
  // ... 省略 ...
}
```

`terraform-aws-modules/vpc/aws` のバージョンを `~> 3.0` に設定したところ、terraform init に成功しました。
プロバイダの依存関係の制約も満たすことができています。

```bash
$ terraform init -upgrade 
... 略 ...
Terraform has been successfully initialized!
... 略 ...


$ terraform providers

Providers required by configuration:
.
├── provider[registry.terraform.io/hashicorp/kubernetes] ~> 2.5.0
├── provider[registry.terraform.io/hashicorp/null]
├── provider[registry.terraform.io/hashicorp/tls]
├── provider[registry.terraform.io/hashicorp/helm] ~> 2.6.0
├── provider[registry.terraform.io/hashicorp/aws] ~> 3.73
├── module.vpc
│   └── provider[registry.terraform.io/hashicorp/aws] >= 3.73.0
├── module.eks
│   ├── provider[registry.terraform.io/hashicorp/tls] >= 2.2.0
│   ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│   ├── module.eks_managed_node_group
│       ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│       ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│       └── module.user_data
│           └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│   ├── module.fargate_profile
│       └── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│   └── module.self_managed_node_group
│       ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│       ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│       └── module.user_data
│           └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
└── module.iam_assumable_role_admin
    └── provider[registry.terraform.io/hashicorp/aws] >= 2.23.0
```