【问题标题】:convert map to list for terraform aws_autoscaling_group将地图转换为 terraform aws_autoscaling_group 的列表
【发布时间】:2019-06-09 18:52:03
【问题描述】:

我有以下子网 ID 映射作为要在 Terraform aws_autoscaling_group 资源中使用的变量:

subnet_ids = {
  "us-east-1" = "subnet-123abc,subnet-456def,subnet-789ghi"
  "us-west-2" = "subnet-1a2b3c,subnet-4c5d6e,subnet-7g8h9i"
}

变量为

variable subnet_ids {
  description = "subnet ids"
  type        = "map"
}

但这不起作用,因为 Terraform 抱怨它需要一个列表但正在查看地图。

只需临时设置一个区域即可:

subnet_ids = ["subnet-123abc", "subnet-456def", "subnet-789ghi"]

变量为:

variable subnet_ids {
  description = "subnet ids"
  type        = "list"
}

并作为vpc_zone_identifier = "${var.subnet_ids}"传递

非常想要一种能够使用地图并能够根据所选区域传入列表的方法

谢谢

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案1】:

    尝试使用lookup 命令和一个变量来表示您的region 从您的map 中选择一个值:

    variable region {
       description = "aws region"
       default = "us-east-1"
    }
    
    ...
    
    vpc_zone_identifier = ["${lookup(var.subnet_ids, var.region)}"]
    

    See the documentation for more examples.

    【讨论】:

    • 还是不行vpc_zone_identifier: should be a listvariable subnet_ids should be type list, got map
    • 我在发布这个问题之前尝试过,但没有奏效,只是再次尝试了你的答案..同样的错误
    • 尝试使用这样的方括号:vpc_zone_identifier = ["${lookup(var.subnet_ids, var.region)}"] 可以吗?
    • 你知道为什么 terraform 一直使用默认 VPC 而不是我通过的子网的 VPC 吗?没有指定 VPC id 本身的选项
    • 试图将相同的东西应用到 security_groups 以进行启动配置,我遇到了这个 github.com/hashicorp/terraform/issues/… 现在卡住了..不确定如何从地图中传递安全组
    【解决方案2】:

    对于遇到 security groups 在 terraform 中自动缩放组资源问题的任何人,这就是您将地图传递到列表的方式

    这是有效的

    security_groups = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
    

    【讨论】:

      【解决方案3】:

      或者……

      variable region {
         description = "aws region"
         default = "us-east-1"
      }
      
      ...
      
      vpc_zone_identifier = ["${var.subnet_ids["${var.region}"]}"]
      

      【讨论】:

        猜你喜欢
        • 2020-11-17
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        • 2021-04-09
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        相关资源
        最近更新 更多