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



我正在使用S3与Terraform进行远程状态。

当我使用 Terraform 工作区时,环境的状态文件的路径最终会s3://<bucket>/env:/<workspace>/<key>terraform块中指定<bucket>key的位置。例如,使用以下地形 HCL:

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

如果我们使用的是 Terraform 工作区,如下所示:

$ terraform workspace new myapp-dev
$ terraform workspace select myapp-dev
$ terraform init
$ terraform apply

然后,我们将在以下路径中得到 Terraform 状态文件:s3://devops/env:/myapp-dev/tf-state/abc/xyz.tfstate

似乎 Terraform 默认使用一个名为env:的子目录,在该子目录下,它管理与工作区关联的状态文件。我的问题是,我们能否在 Terraform 配置中添加任何内容,使我们能够对其中env:部分进行一些控制?

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

/<workspace_key_prefix>/<workspace_name>/<key>

workspace_key_prefix的默认值为env:。您可以将配置更改为以下内容:

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

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

最新更新