【发布时间】:2020-09-07 22:58:25
【问题描述】:
环境
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
}
}
bucket 存在,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 文件的名称。我已经删除了(谢谢),但它并没有帮助解决问题。
另外,我刚刚尝试在旧图像中运行它:hashicorp/terraform:0.12.17,但我收到了类似的错误:
Error: Failed to get existing workspaces: InvalidParameter: 1 validation error(s) found.
- minimum field size of 1, ListObjectsInput.Bucket.
我猜我在这里做了一些非常愚蠢的事情,但我看不出它是什么。
【问题讨论】:
-
key参数应该是存储状态的目录的路径后缀,而不是状态本身的路径后缀。否则,这些值看起来不错。 -
@MattSchuchard - 呃!当然,谢谢,但我现在已经解决了这个问题,问题仍然存在。我已经相应地更新了问题。
标签: terraform terraform-remote-state