首页 > 解决方案 > 从字符串中选择特定模式来创建资源 - terraform

问题描述

我想使用 terraform 中的变量模式在 AWS 上创建资源。

例如:

proyects = ["proyect1/X", "proyect1/Y", "proyect2/X", ...]

resource "aws_example" "proyect1" {
count = length(var.proyects) <-- only using the proyect1/... ones
name = var.proyects[count.index] <-- only using the proyect1/... ones

资源 proyect1/X 创建

资源 proyect1/Y 创建

resource "aws_example" "proyect2" {
count = length(var.proyects) <-- only using the proyect2/... ones
name = var.proyects[count.index] <-- only using the proyect2/... ones

资源 proyect2/X 创建

资源 proyect2/Y 创建


我不知道这是否可能......我正在尝试使用https://www.terraform.io/docs/language/functions/index.html

标签: amazon-web-servicesterraformterraform-provider-aws

解决方案


您可以过滤proyect1proyect2使用for_each

variable "proyects" {
  default = ["proyect1/X", "proyect1/Y", "proyect2/X", "proyect2/Y", "proyect2/Z"]
}


resource "aws_example" "proyect1" {
  for_each = [for v in var.proyects : v if length(regexall("proyect1.*", v)) > 0]
  name = each.key
}

resource "aws_example" "proyect2" {
  for_each = [for v in var.proyects : v if length(regexall("proyect2.*", v)) > 0]
  name = each.key
}

推荐阅读