amazon-web-services - 如何在不使用 terraform 中的计数的情况下获取列表中的多个值?
问题描述
我正在使用 terraform 中的计数创建多个资源。例如:
resource "aws_subnet" "rSubnetMGMT" {
count = length(var.vletter)
availability_zone = "${var.vRegion}${var.vletter[count.index]}"
vpc_id = aws_vpc.rVPCMGMT.id
cidr_block = var.vSubnetMGMTCIDR
map_public_ip_on_launch = "true"
tags = {
Name = "${var.vWorkloadShortCode}-mgmt-MGMT- ${var.vRegion}${var.vletter[count.index]}"
SubnetType = "MGMT"
}
}
这里 vletter = ["a","b","c"] 所以这会为每个可用区创建 3 个子网现在我想创建一个“aws_autoscaling_group”,它需要一个 vpc_zone_identifier 列表,即我创建的子网 ID
resource "aws_autoscaling_group" "rAutoScalingGroup" {
count = lenght(var.vletter)
max_size = var.vMaxNoofInstances
min_size = var.vMinNoofInstances
launch_configuration = aws_launch_configuration.rLaunchConfiguration.name
vpc_zone_identifier = [aws_subnet.rSubnetMGMT[count.index].id ]
metrics_granularity = 1Minute
enabled_metrics = [GroupInServiceInstances]
load_balancers = aws_elb.rLoadBalancer.name
tag {
Name = "${var.vInstanceShortNameBAS}-asg"
}
}
但是如果我在创建资源(aws_autoscaling_group)时使用计数,它将创建多个资源,即为每个子网创建 3 个不同的自动缩放组,但在这里我只想要我之前创建的所有子网 ID。如何在不创建多个资源的情况下实现这一目标?
解决方案
您可以使用 splat 运算符:aws_subnet.rSubnetMGMT.*.id
它将解析为已创建子网的 ID 列表。
推荐阅读
- postgresql - 仅从 postgres 中的 csv 中选择列名
- winapi - 富编辑渲染某些 Unicode 字符的问题
- c# - Dynamic OrderBy // InvalidOperationException:不兼容类型“System.Linq.Queryable”的通用方法“ThenByDescending”
- dax - 如何修复具有不同投资开始日期的项目的 DAX XIRR 计算?
- html - 如何从 VBA 的下拉菜单中访问选项
- python-3.x - 根据其他列的条件估算列值 - Python Pandastic Way
- c++11 - RVO 是否需要移动构造函数/赋值才能在 C++11 中启动?
- bash - Bash:在文件中查找字符串并删除下一行
- css - 响应来自另一个图像的图像
- primefaces - 无法将 var 插入 Primeface 的数据表 selectManyCheckbox 中的 rowKey