首页 > 解决方案 > 如何为 Terraform S3 后端资源传递变量?

问题描述

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}

不能通过变量文件为上面的bucket和key提供值吗?

因为当我尝试这样做时:

terraform {
  backend "s3" {
    bucket = var.bucket
    key    = var.key
  }
}

,我收到以下错误:

Error: Variables not allowed

on main.tf line 3, in terraform:
3:      bucket = var.bucket

Variables may not be used here.

Error: Variables not allowed

on main.tf line 4, in terraform:
4:      key = key

Variables may not be used here.

标签: terraform

解决方案


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

bucket = "mybucket"
key    = "path/to/my/key"

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

terraform init -backend-config=backend.tfvars

您需要使用单独的后端配置文件而不是通常的 tfvars 文件的原因是在设置后端时会使用这些值。这意味着它们需要在您运行时提供terraform init,而不是稍后在您将后端与terraform apply.

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


推荐阅读