当我通过 terraform 在现有 vpc 中创建 ec2 实例和 sg 时,如何从数据源调用子网 ID

问题描述 投票:0回答:0
``` 我需要在现有的 vpc 和子网中创建一个 ec2 实例和 sg 组

我创建了 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 ,任何人都可以帮助我。

amazon-ec2 terraform datasource private-subnet
© www.soinside.com 2019 - 2024. All rights reserved.