【问题标题】:Terraform: Using S3 bucket to host remote state file - BucketRegionError: incorrect regionTerraform:使用 S3 存储桶托管远程状态文件 - BucketRegionError:不正确的区域
【发布时间】:2020-09-29 20:14:53
【问题描述】:

存储桶已在 AWS 中的正确区域创建。使用以下提供程序设置

provider "aws" {
  access_key = "CORRECTACCESSKEYISINHERE"
  secret_key = "CORRECTSECRETKEYISINHERE"
  region ="eu-west-2"
  alias = "regional"
}

这里是 S3 后端设置

terraform {
  backend "s3" {
    region = "eu-west-2"
    bucket = "red-dwarf-terraform-eu-west-2"
    key    = "terraform-state/red-dwarf/dev/main/terraform.tfstate"
    access_key = "CORRECTACCESSKEYISINHERE"
    secret_key = "CORRECTSECRETKEYISINHERE"
  }
}

不断出现以下错误

Error refreshing state: BucketRegionError: incorrect region, the bucket is not in 'eu-west-2' region at endpoint ''
        status code: 301, request id: , host id: 

已尝试删除现有的 .terraform 文件夹,部署到一个完整的环境。没有任何效果。

任何帮助将不胜感激

【问题讨论】:

    标签: amazon-s3 terraform terraform-provider-aws


    【解决方案1】:
    provider "aws" {
        region = "desired-region"
        alias = "regional"
    }
    
    terraform {
      backend "s3" {
        region = aws.regional
        bucket = "red-dwarf-terraform-eu-west-2"
        key    = "terraform-state/red-dwarf/dev/main/terraform.tfstate"
        access_key = "CORRECTACCESSKEYISINHERE"
        secret_key = "CORRECTSECRETKEYISINHERE"
      }
    }
    

    【讨论】:

    • bucket的名字如上。如果这还不够,你能澄清一下你需要什么吗?
    • 存储桶名称是“red-dwarf-terraform-eu-west-2”还是“terraform-state”?
    • "red-dwarf-terraform-eu-west-2"
    • 那么密钥应该是这样的:“red-dwarf-terraform-eu-west-2/path-to-file”。希望对您有所帮助。
    • 问题出在存储桶名称或密钥上。所有其他的东西看起来都很好
    【解决方案2】:

    问题看起来像这一行

     key    = "terraform-state/red-dwarf/dev/main/terraform.tfstate"
    

    试试这个

    terraform {
      backend "s3" {
        region = "eu-west-2"
        bucket = "red-dwarf-terraform-eu-west-2"
        key    = "(filename)/terraform.tfstate"
      }
    }
    

    在我的环境中,我们是这样使用的

    ex:项目(项目名称)文件夹,在这个文件夹中我们有 2 个文件夹(testproject,Jenkins)。 backend.tf testproject 文件夹内的文件

    文件夹结构

    project
          testproject ---->backend.tf, database.tf, iam.tf, config.tf, .., ...
          Jenkins
    

    地形文件 backend.tf

    terraform {
      backend "s3" {
        bucket = "bucketname"
        key    = "testproject/terraform.tfstate"
        region = "ap-southeast-2"
      }
    }
    

    选项 2

    删除 .terraform 文件夹并再次尝试 terraform init

    【讨论】:

    • 这也不能回答问题。 OP 正在一个区域中寻找存储桶,但正如错误所说,它实际上在另一个区域中。
    猜你喜欢
    • 2017-01-05
    • 2019-04-29
    • 2019-07-29
    • 2015-06-29
    • 2021-11-20
    • 1970-01-01
    • 2017-12-29
    • 2019-02-22
    • 2021-12-07
    相关资源
    最近更新 更多