存储桶区域错误:区域不正确,存储桶不在"eu-west-2"中 - 地形



我需要 terraform 才能访问我的 S3 存储桶,但它无法在指定区域找到存储桶。

我 main.tf:

provider "aws" {
    region = "eu-west-2"
}
terraform {
    backend "s3" {
        bucket = "xyz-state-blog"
        key    = "dev/terraform"
        region = "eu-west-2"
    }
}
locals {
    azs                     = ["eu-west-2a", "eu-west-2b", "eu-west-2c"]
    environment             = "dev"
    kops_state_bucket_name  = "${local.environment}-kops-state"
    // Needs to be a FQDN
    kubernetes_cluster_name = "k8s-dev0.domain.com"
    ingress_ips             = ["10.0.0.100/32", "10.0.0.101/32"]
    vpc_name                = "${local.environment}-vpc"
    tags = {
        environment = "${local.environment}"
        terraform   = true
    }
}
data "aws_region" "current" {}

以下是我在命令terraform init遇到的错误:

Error inspecting states in the "s3" backend:
BucketRegionError: incorrect region, the bucket is not in 'eu-west-2' region
  status code: 301, request id: , host id:
对我来说

,删除 .terraform 文件夹并再次尝试terraform init为我解决了与区域相关的问题。

无需删除整个 .terraform 文件夹:

  1. 找到您的.terraform/terraform.tfstate
  2. 删除负责存储桶S3 JSON 对象
  3. 删除生成远程后端的节
  4. 运行terraform init和享受

出现错误显然是因为没有创建要与之同步的 S3 存储桶。

无需删除整个 .terraform 文件夹:

首先找到存储桶所在的正确区域,然后您可以使用terraform init -reconfigure命令重新配置 terraform,它会解决您的问题。

我这边的问题是我没有在我的 aws 提供商块中指定区域。

不知何故,在我将其设置为 us-east-1 并按照@Dhruv Modi 的建议使用terraform init -reconfigure后,错误不再发生。

如果它对任何人有帮助,以下是我在提供程序块中指定区域的方式:

provider "aws" {
  region = "us-east-1"
  # ...
}

我遇到了这个问题并浪费了很多时间,我想我会分享我的经验,它可能会帮助其他人。

当您在其他地方定义

aws"区域"时,几乎总是发生这种情况,而不是您认为已定义它的位置,并且其他定义会覆盖您认为已定义的值。

就我而言,它在~/.aws/

config配置文件中,有些人可能会在~/.aws/profile中找到它。

您可以通过以下两种方法之一确保获得正确的值:

  1. 从命令行导出 AWS_DEFAULT_REGION= #。或:
  2. 如果您使用的是 terraform/terragrunt,以下是优先级顺序

最新更新