我创建了 ec2.tf,我们使用本地函数获取 vpc_id 和 CIDR 块
代码
“资源”aws_security_group“”test_automation_ec2_instance_and_sg_group“{ 计数 = local.test_automation_ec2_instance_and_sg_group name = "test_automation_ec2_sg_group" description = "test_automation ec2 实例和 sg 组" vpc_id = local.vpc_id
出口{ 来自_端口 = 0 to_port = 0 协议=“-1” cidr_blocks = local.vpc_cidr_block
} } 资源“aws_instance”“test_automation_ec2_instance_and_sg_group”{ 计数 = local.test_automation_ec2_instance_and_sg_group instance_type = var.instance_type ami = var.ami availability_zone = var.availability_zone vpc_security_group_ids = [aws_security_group.test_automation_ec2_instance_and_sg_group[count.index].id] 子网 ID = XXXXXXXXXXXX root_block_device { 体积大小 = 50 } }"#
下面是数据源,为了创建 ec2 实例,我们需要一个子网 ID,共 3 个
在数据中我们这样声明
代码
数据“aws_subnets”“app_subnet_ids”{ 计数 = local.pre_deployed_env
过滤器{ 名称=“标签:名称” 值 = ["privatesubnet1", "privatesubnet2", "privatesubnet3"] } }
在我们提到的变量中
代码
变量“private_subnets”{ 类型 = 地图(任何) 默认 = {} }
我尝试使用这样的元素函数“subnet_id = element(data.aws_subnets.app_subnet_ids, count.index)
但是它不起作用,如果我们在变量中硬编码子网 ID,它就可以正常工作。
但是我们想调用 subnet id form data source ,任何人都可以帮助我。