Как отфильтровать источник данных (AWS AMI) на основе списка тегов - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать источник данных aws_ami , который выбирает последнюю версию AMI на основе нескольких тегов.

Суть в том, что я хочу сделать это с картой тегов и их значения, а не путем определения фильтров для каждого указанного тега c в источнике данных.

Пример:

module-vars.tf

variable "filter-tags" {
  type = "map"
  default = {
    "java_vendor" = "oracle"
  }
}

module.tf

data "aws_ami" "aws-ami" {
  most_recent = true
  owners = ["self"]

  // Filter code here
  // e.g. FICTIONAL CODE, DON'T USE
  filter {
    name = "tags:${var.filter-tags}"
  }
}

Поэтому очевидно, что эта переменная filter-tags должна быть в состоянии измениться, и отфильтрованный AMI должен иметь все соответствующие теги .

Есть идеи?

1 Ответ

1 голос
/ 26 марта 2020

Нашел способ сделать это с Dynami c Blocks

data "aws_ami" "aws-ami" {
  most_recent = true
  owners      = ["self"]

  dynamic "filter" {
    for_each = var.filter-tags
    iterator = tag

    content {
      name   = "tag:${tag.key}"
      values = ["${tag.value}"]
    }
  }
}
...