Terraform-无法获取子网 ID

Terraform-无法获取子网 ID

我正在尝试通过 terraform 创建 RDS 实例,但在从 AWS 获取子网 ID 以创建 aws_db_subnet_group 时遇到了问题。

我尝试过很多方法,例如:

数据.aws_subnet.test_subnet.id

aws_subnet.test_subnet.id

但每次我都会收到错误:“托管资源“aws_subnet”,“test_subnet”尚未在根模块中声明。”

在根位置我定义了输出变量:

  output "output" {
   value = {
    vpc_id              = module.vpc.vpc_data.vpc_id
    test_subnet_id      = module.vpc.vpc_data.test_subnet.*.id
  }
}

我也尝试使用变量 var.test_subnet_id 但是出现了类似的错误:

名为“test_subnet_id”的输入变量尚未声明。可以使用变量“test_subnet_id”{} 块声明此变量。

有人知道我做错什么了吗?

答案1

如何创建 VPC 和子网。

如果你手动创建,则可以使用以下命令获取所有 ID:

data "aws_subnet_ids" "subnet-ids" {
  vpc_id = {VPC-ID}
}

如果你通过 TF 创建如下内容:

resource "aws_subnet" "subnet1" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
}

resource "aws_subnet" "subnet2" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.2.0/24"
}

子网 ID:

aws_subnet.subnet2.id
aws_subnet.subnet2.id

要创建 aws_db_subnet_group,您可以使用:

resource "aws_db_subnet_group" "default" {
  name       = "main"
  subnet_ids = data.aws_subnet_ids.subnet-ids
}

或者

resource "aws_db_subnet_group" "default" {
  name       = "main"
  subnet_ids = [ aws_subnet.subnet2.id, aws_subnet.subnet2.id]
}

相关内容