regex - terraform 列表中的正则表达式
问题描述
我正在尝试正则表达式列表中的特定变量,特别是aws_instance
在 terraform 的标签中。它看起来像这样:
variable "string" { default = "Foo" }
variable "id" { default = "https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz" }
variable "id2" { default = "456" }
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
tags {
Name = "${join(".", compact(list(var.string, var.id, var.id2, "lorem-ipsum")))}"
}
}
我能否variable.id
在该列表中应用正则表达式,特别是
${replace(variable.id, "/.*-(.*)/.*/", "$1")}
所以输出会是这样的
tags = foo, v1.2, 456, lorem ipsum
正则表达式已经有效,我只是不知道如何将它放在这样的列表中。我将如何去做呢?谢谢!
解决方案
由于您使用的是 TF 0.14.4,因此您可以执行以下操作:
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
tags {
Name = join(".", compact(list(
var.string,
replace(var.id, "/.*-(.*)/.*/", "$1"),
var.id2,
"LOREM-ipsum")))
}
}
以上给出:
Foo.v1.2.456.LOREM-ipsum
或更简单:
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
tags {
Name = join(".", [
var.string,
replace(var.id, "/.*-(.*)/.*/", "$1"),
var.id2,
"LOREM-ipsum"])
}
}
推荐阅读
- image-processing - 按相对字体大小对图像上的文本进行排序
- javascript - JQuery点击触发器首先不起作用
- 标签
- c - 超过一定大小的二维矩阵不会在 C 中运行
- c++ - 在没有移动构造函数或移动赋值的情况下调用 std::move
- flutter - Flutter:如何使用下拉按钮对数据进行排序
- c++ - 容器内的 Gdb 以 137 终止
- python - 在管道内给出时,Spark/pyspark 的 RFormula 是 VectorAssembler 和 Indexers 的替代品吗?
- assembly - 自定义x86内核访问char*的C函数给出随机值
- google-maps - 谷歌地图 - 折线未显示 - 使用带有 lng/lat 的 XML 文件
- reactjs - webpack 在树中构建一个原始的