我是否可以将Terraform配置为不使用;环境:";在工作区的路径中';S3上的状态文件路径?

我是否可以将Terraform配置为不使用;环境:";在工作区的路径中';S3上的状态文件路径?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我使用S3作为Terraform的远程状态 当我使用Terraform工作区时,环境状态文件的路径最终是s3:///env://,其中和键在Terraform块中指定。例如,使用以下地形HCL: terraform { backend "s3" { bucket = "devops" key = "tf-state/abc/xyz.tfstate" region = "us-east-1" } } 如果我们使用的是地形工作区,比如: $ terraform w

我使用S3作为Terraform的远程状态

当我使用Terraform工作区时,环境状态文件的路径最终是
s3:///env://
,其中
键在
Terraform
块中指定。例如,使用以下地形HCL:

terraform {
  backend "s3" {
    bucket = "devops"
    key = "tf-state/abc/xyz.tfstate"
    region = "us-east-1"
  }
}

如果我们使用的是地形工作区,比如:

$ terraform workspace new myapp-dev
$ terraform workspace select myapp-dev
$ terraform init
$ terraform apply
然后,我们将以以下路径中的地形状态文件结束:
s3://devops/env:/myapp dev/tf state/abc/xyz.tfstate


Terraform在默认情况下似乎使用了一个名为
env:
的子目录,在该目录下它管理与工作空间关联的状态文件。我的问题是,我们是否可以在Terraform配置中添加任何东西,以允许我们对
env:
部分进行控制?

当使用非默认工作区时,S3存储桶中的状态路径包括 价值,例如:


然后,当使用
myapp-dev
工作区时,状态文件将是
s3://devops/tf-state/myapp-dev/terraform.tfstate

谢谢,非常有用!
/<workspace_key_prefix>/<workspace_name>/<key>
terraform {
  backend "s3" {
    bucket = "devops"
    key = "terraform.tfstate"
    region = "us-east-1"
    workspace_key_prefix = "tf-state"
  }
}