terraform - 如何在terraform的嵌套列表中切片第一个元素
问题描述
我想通过,var.domain_names
例如list(list(string))
:
domain_names = [
["foo.com",".*foo-1.com",".*foo-2.com"],
["bar.com",".*bar-1.com"],
...
]
因此,它应该为 foo.com、bar.com ... 创建证书,但将 .*foo-1.com ... 等其他证书添加到 subject_alternative_names 中。
请帮我解决这个问题,使用 terraform 0.12.18
resource "aws_acm_certificate" "certificate" {
domain_name = var.domain_names[count.index]
subject_alternative_names = slice(var.domain_names, 1, length(var.domain_names))
validation_method = var.validation_method
tags = {
Name = var.domain_names[count.index]
owner = "xx"
terraform = "true"
}
lifecycle {
create_before_destroy = true
}
}
解决方案
您可以使用一个map
和一个for_each
循环来完成此操作。例如:
variable "domain_names" {
type = map(list(string))
default = {
"foo.com" = ["foo.com", ".*foo-1.com", ".*foo-2.com"]
"bar.com" = [".*bar-1.com"]
}
}
resource "aws_acm_certificate" "certificate" {
for_each = var.domain_names
domain_name = each.key
subject_alternative_names = each.value
validation_method = var.validation_method
tags = {
Name = each.key
owner = "xx"
terraform = "true"
}
lifecycle {
create_before_destroy = true
}
}
有关循环和条件的更多信息,请参阅此博客文章。
推荐阅读
- api - 了解多个 http 请求延迟
- sql - 使用条件在 T-SQL 中搜索 XML
- javascript - React quill 自定义图像处理程序模块导致编辑器出现打字问题
- python - 如何绘制与给定 matplot 图中相同的 x 和 y 轴值?
- angular - 如何在http拦截器中使用cordova设备就绪功能
- angular - Observable 上的订阅如何以及何时自动取消订阅?
- python-3.x - 付款计算器中的意外循环
- javascript - 如何将变量从 xs javascript 传递给 ABAP 函数
- r - 基于其他列滞后值的条件计算
- java - 从 docker 容器变量环境访问 lo4j 日志记录级别