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

Bij*_*iju 9 terraform

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}
Run Code Online (Sandbox Code Playgroud)

是否无法通过变量文件为上面的存储桶和键提供值?

因为当我尝试这样做时:

terraform {
  backend "s3" {
    bucket = var.bucket
    key    = var.key
  }
}
Run Code Online (Sandbox Code Playgroud)

,我收到以下错误:

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}
Run Code Online (Sandbox Code Playgroud)

Chi*_*ang 12

创建一个名为backend.tfvars内容的文件:

bucket = "mybucket"
key    = "path/to/my/key"
Run Code Online (Sandbox Code Playgroud)

在命令的命令行选项中指定此文件名terraform init

bucket = "mybucket"
key    = "path/to/my/key"
Run Code Online (Sandbox Code Playgroud)

您需要一个单独的后端配置文件,而不是通常的 tfvars 文件,因为在设置后端时会使用这些值。这意味着它们需要在您运行时提供terraform init,而不是稍后当您通过诸如 之类的命令使用后端时提供terraform apply

有关部分配置的更多详细信息,请参阅 terraform 文档。


Bij*_*iju 1

事实证明,我们无法传递后端存储桶的运行时值和用于存储状态文件的密钥。

这就是概念的Terraform Workspaces由来!!