aws_shield_protection 地形

aws_shield_protection Terraform

我正在努力寻找一种方法来将所有具有特定标签值(例如 Shield protection = ON)的负载均衡器包含在 aws 帐户中。 目前我有一个 arn 的映射在一个变量和 运行 一个 for 循环中。这种方法有效但效率不高;因为每次我都必须手动添加新负载均衡器的 ARN。

resource "aws_shield_protection" "this" {
  for_each = var.listofarn

  name         = "shield protection".each.key
  resource_arn = each.key
}

variable listofarn {
  type = map(string)
  default = {
  appx_alb="arn::xxxxx"
  appy_alb="arn:yyyyy"
 }
}

有没有办法使用数据资源“aws_lb”。 谢谢。

使用数据源帮助不大aws_lb 数据源只能 return 一个 alb。您不能使用它来获取有关所有 ALB 的信息。您必须 运行 aws_lb 带有标签或某些 ALB id 的 for_loop 数据源。

但是您可以通过开发 external data source 来解决您的问题。由于它是一个完全自定义的数据源,它可以 return 以您想要的形式提供有关所有 ALB 的信息。