如何为Terraform S3后端资源传递变量?

如何为Terraform S3后端资源传递变量?,terraform,Terraform,是否不可能通过变量文件为上面的bucket和key提供值 因为当我尝试这样做时: terraform { backend "s3" { bucket = "mybucket" key = "path/to/my/key" region = "us-east-1" } } ,我得到以下错误: 错误:不允许使用变量 在main.tf 3号线,地形: 3:bucket=var.buc

是否不可能通过变量文件为上面的bucket和key提供值

因为当我尝试这样做时:

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}
,我得到以下错误:

错误:不允许使用变量
在main.tf 3号线,地形:
3:bucket=var.bucket
这里不能使用变量。
错误:不允许使用变量
在main.tf 4号线,地形:
4:键=键
这里不能使用变量。

创建一个名为
backend.tfvars的文件,其内容如下:

terraform {
  backend "s3" {
    bucket = var.bucket
    key    = var.key
  }
}
terraform
命令的命令行选项中指定此文件名:

terraforminit-backend config=backend.tfvars
需要使用单独的后端配置文件而不是通常的tfvars文件的原因是,在设置后端时会使用这些值。这意味着当您运行
terraforminit
时需要提供它们,而不是稍后您使用带有
terraformapply
等命令的后端时


有关更多详细信息,请参阅上的terraform文档。

非常感谢!我们不能通过
variables.tf
.tfvars
文件传递后端的bucket和key名称吗?我问这个问题的原因是——我们有几十个应用程序,每个应用程序有六个环境。所以我们总共需要将近100份州档案。使用100个环境变量-这是一个好的做法吗?请告知。当我给出后端bucket名称并输入.tfvars时,正如我在问题中所解释的,我得到了错误。我不确定我是否理解这个解决方案。因此,除了在tfvars中提供后端bucket名称和键之外,我还应该创建一个TF_CLI_ARGS_init环境变量?请帮忙!我编辑了我的答案,以显示如何从文件中读取后端配置。
bucket = "mybucket"
key    = "path/to/my/key"