我正在尝试通过 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]
}