本地值
本地值将名称分配给 表达式,这样您就可以在模块中多次使用该名称,而无需重复该表达式。
如果您熟悉传统的编程语言,将模块与函数定义进行比较可能会有所帮助。
注意
为简洁起见,当含义从上下文中明确时,本地值通常简称为“locals”。
声明本地值
一组相关的本地值可以在单个 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>
。
注意
本地值由 locals
块(复数)创建,但您将它们引用为名为 local
(单数)的对象上的属性。引用本地值时,请确保不要使用“s”!
resource "aws_instance" "example" {
# ...
tags = local.common_tags
}
本地值只能在其声明的模块中的表达式中访问。
何时使用本地值
本地值有助于避免在配置中多次重复相同的值或表达式,但如果过度使用,它们也可能使未来的维护人员难以阅读配置,因为它们隐藏了实际使用的值。
仅适度使用本地值,在单个值或结果在许多地方使用 *并且* 该值可能在将来更改的情况下使用。能够在一个中心位置轻松更改该值是本地值的主要优势。