Terraform: 错误:提供程序配置不存在。

3

在将Terraform从版本0.11.14升级到0.13.7后,我遇到了一个错误:

错误:无效的资源名称

位于.terraform/modules/tflib/alb/main.tf的第53行,资源“aws_alb_listener”“443”: 53:resource "aws_alb_listener" "443" {

名称必须以字母或下划线开头,并且只能包含字母、数字、下划线和破折号。

因此,我将其重命名为resource "aws_alb_listener" "https",但另一个错误被抛出:

错误:提供程序配置不存在

要使用module.tflib.module.alb.aws_alb_listener.443,需要其原始提供程序配置provider["registry.terraform.io/-/aws"],但它已被删除。当一个提供程序配置被删除时,由该提供程序创建的对象仍然存在于状态中。重新添加提供程序配置以销毁module.tflib.module.alb.aws_alb_listener.443,之后您可以再次删除提供程序配置。

AWS提供程序配置:

provider "aws" {
  region = var.region
}

terraform {
  required_providers {
    aws = {
      version = "~> 3.15"
      source = "hashicorp/aws"
    }
  }
}

我怎样才能解决它?


1
你尝试过按照这里指定的方式添加“required_providers”吗:https://www.terraform.io/upgrade-guides/0-13.html#explicit-provider-source-locations? - Marko E
还没有!我应该在tflib内部完成它,还是需要在顶层完成? - Roman Newaza
如果我没记错的话,这应该只在顶层完成。 - Marko E
2
你应该从11升级到12再到13,而不是直接从11升级到13。这样可以避免许多潜在的问题。 - Marcin
这在升级指南 https://www.terraform.io/upgrade-guides/0-13.html#why-do-i-see-provider-during-init- 中含义不太明确。就像您的情况一样,有时不太清楚这是否是根本原因,并且通过指向此文档解决其他 SO 问题很难搜索到。 - Matt Schuchard
1个回答

5

当我把TensorFlow从0.11更新到0.13时,遇到了这个问题。正如其他人已经建议的那样,我执行了11>12>13,但仍然遇到了相同的问题。

我认为发生的情况是状态具有旧的提供程序配置,在这种情况下是aws,但它也可以是其他任何值,因此您可以通过以下方式更新状态中的提供程序,以获取新的兼容版本:

terraform state replace-provider 'registry.terraform.io/-/aws' 'registry.terraform.io/hashicorp/aws'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接