跳至主要内容

本地值

本地值将名称分配给 表达式,这样您就可以在模块中多次使用该名称,而无需重复该表达式。

如果您熟悉传统的编程语言,将模块与函数定义进行比较可能会有所帮助。

  • 输入变量 就像函数参数。
  • 输出值 就像函数返回值。
  • 本地值就像函数的临时局部变量。

声明本地值

一组相关的本地值可以在单个 locals 块中一起声明。

代码块
locals {
service_name = "forum"
owner = "Community Team"
}

本地值中的表达式不仅限于字面常量;它们还可以引用模块中的其他值以转换或组合它们,包括变量、资源属性或其他本地值。

代码块
locals {
# Ids for multiple sets of EC2 instances, merged together
instance_ids = concat(aws_instance.blue.*.id, aws_instance.green.*.id)
}

locals {
# Common tags to be assigned to all resources
common_tags = {
Service = local.service_name
Owner = local.owner
}
}

使用本地值

声明本地值后,您可以在 表达式 中将其引用为 local.<NAME>

代码块
resource "aws_instance" "example" {
# ...

tags = local.common_tags
}

本地值只能在其声明的模块中的表达式中访问。

何时使用本地值

本地值有助于避免在配置中多次重复相同的值或表达式,但如果过度使用,它们也可能使未来的维护人员难以阅读配置,因为它们隐藏了实际使用的值。

仅适度使用本地值,在单个值或结果在许多地方使用 *并且* 该值可能在将来更改的情况下使用。能够在一个中心位置轻松更改该值是本地值的主要优势。