使用变量创建资源

时间:2020-03-20 00:33:14

标签: amazon-web-services terraform

是否可以用变量替换资源名称 代替这个

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

我想这样做

resource "aws_instance" "$my_box" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

其中$ my_box将在我的vars.tf文件中定义

1 个答案:

答案 0 :(得分:2)

无法使用动态资源名称。

Identifiers

大多数Terraform特定的构造(例如资源,输入变量等)的自变量名称,块类型名称和名称都是标识符

标识符可以包含字母,数字,下划线(_)和连字符(-)。标识符的首字符不能为数字,以避免与文字数字产生歧义。

对于完整的标识符规则,Terraform实现了Unicode标识符语法,该语法已扩展为包括ASCII连字符-。

资源名称是一种标识符,例如编程语言中的函数名称,据我所知,它是静态的。

如果有python函数或C函数,我们不希望函数名称可以是动态的。

def function(arg): 
   ...


void main(void){
   ...
}

尽管Python之类的语言可以将函数作为对象传递并将其设置为变量,但HCL并不是这种语言。