Terraform 设置 - 远程状态 s3 - InvalidParameter 验证错误

Terraform settings - remote state s3 - InvalidParameter validation error

环境

Terraform v0.12.24 + provider.aws v2.61.0

运行 在高山容器中。

背景

我有一个基本的 terraform 脚本 运行没问题,但现在我正在扩展它并尝试配置远程 (S3) 状态。

terraform.tf:

terraform {
  backend "s3" {
    bucket         = "labs"
    key            = "com/company/labs"
    region         = "eu-west-2"
    dynamodb_table = "labs-tf-locks"
    encrypt        = true
  }
}

桶存在,table也存在。我已经使用 terraform 创建了它们,并通过控制台进行了确认。

问题

当我 运行 terraform init 我得到:

Error refreshing state: InvalidParameter: 2 validation error(s) found.
- minimum field size of 1, GetObjectInput.Bucket.
- minimum field size of 1, GetObjectInput.Key.

我试过的

terraform fmt 报告没有错误,并愉快地重新格式化了我的 terraform.tf 文件。我也尝试将节移动到我的 main.tf 中,以防万一 terraform.tf 文件由于某种原因被忽略。我得到了完全相同的结果。

我也尝试过 运行 在没有 alpine 容器的情况下,从 aws 中的 ubuntu ec2 实例中进行此操作,但我得到了相同的结果。

我原来在密钥中有 terraform 文件的名称。我已经删除了它(谢谢),但它并没有帮助解决问题。

此外,我刚刚在旧图像中尝试 运行ning 这个:hashicorp/terraform:0.12.17 但我得到了类似的错误:

Error: Failed to get existing workspaces: InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, ListObjectsInput.Bucket.

我猜我在这里做了一些微不足道的蠢事,但我看不出它是什么。

已解决!!!

我不明白这个问题,但我现在有一个可行的解决方案。我删除了 .terraform 目录并重新运行 terraform init。这对我来说没问题,因为我没有现有状态。洞察力来自阅读 0.12.17 版 terraform 的错误,该错误抱怨无法读取工作空间。

Error: Failed to get existing workspaces: InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, ListObjectsInput.Bucket.

最初让我相信早期版本的 tf 在读取较新版本的配置时存在问题。所以,我吹走了 .terraform 并且它与旧的 tf 一起工作,所以我再次这样做并且它也与较新的 tf 一起工作。显然,terraform 的存储空间中有什么东西自己搞砸了。我不知道如何或为什么。但是,它对我有用,所以...