Amazon s3 如何在Terraform变量中连接S3 bucket名称并将其传递给主tf文件
我正在编写terraform模板来创建两个S3存储桶,但是,我的要求是将它们的名称连接到vars.tf中,然后将其传递给主tf文件。下面是vars.tf和主s3.tf文件 vars.tf:Amazon s3 如何在Terraform变量中连接S3 bucket名称并将其传递给主tf文件,amazon-s3,terraform,terraform-provider-aws,Amazon S3,Terraform,Terraform Provider Aws,我正在编写terraform模板来创建两个S3存储桶,但是,我的要求是将它们的名称连接到vars.tf中,然后将其传递给主tf文件。下面是vars.tf和主s3.tf文件 vars.tf: variable TENANT_NAME { default = "Mansing" } variable BUCKET_NAME { type = "list" default = ["bh.${var.TENANT_NAME}.o365.attachments", "
variable TENANT_NAME {
default = "Mansing"
}
variable BUCKET_NAME {
type = "list"
default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]
}
s3.tf:
resource "aws_s3_bucket" "b" {
bucket = "${element(var.BUCKET_NAME, 2)}"
acl = "private"
}
terraform plan什么时候会出现一个错误,表明var在这里可能不起作用
Error: Variables not allowed
on vars.tf line 10, in variable "BUCKET_NAME":
10: default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]
Variables may not be used here.
Error: Variables not allowed
on vars.tf line 10, in variable "BUCKET_NAME":
10: default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]
Variables may not be used here.
我尝试用区域设置替换vars文件中的var,但没有成功。您可以使用Terraform
locals
块连接s3.tf
文件中的变量值:
locals {
BUCKET_NAME = [
"bh.${var.TENANT_NAME}.o365.attachments",
"bh.${var.TENANT_NAME}.o365.eml"
]
}
resource "aws_s3_bucket" "b" {
bucket = "${element(local.BUCKET_NAME, 2)}"
acl = "private"
}
格式(“%s/%s”,var.var1,var.var2)如果要使用变量作为其他变量默认值的一部分进行插值,则需要使用
local
:在使用局部变量时,可能会重复相同的错误。`````变量TENANT_NAME{default=“mansing”}locals{first_env=“bh.${var.TENANT_NAME}.o365.attachments”second_env=“bh.${var.TENANT_NAME}.o365.eml”}变量BUCKET_NAME{type=“list”default=[local.first_env,local.second_env]}``它起作用了,当我在Main.tf中使用局部变量而不是在vars.tf中使用它时,我还使用了vars.tf中定义的变量<代码>局部变量{s3_NAME=[“bh.${var.TENANT_NAME}.o365.attachments”,“bh.${var.TENANT_NAME}.o365.eml”]}