Amazon web services 使用terraform创建aws rds实例?

Amazon web services 使用terraform创建aws rds实例?,amazon-web-services,terraform,Amazon Web Services,Terraform,我试图使用terraform在AWS上创建一个RDS实例,并得到以下错误 这个代码行吗 resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" } resource "aws_subnet" "private-subnet1" { vpc_id = "${aws_vpc.main.id}" cidr_block = "10.0.1.0/24" } resource "aws_subnet" "private-subnet2"

我试图使用terraform在AWS上创建一个RDS实例,并得到以下错误

这个代码行吗

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}


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

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

resource "aws_db_subnet_group" "db-subnet" {
  name       = "DB subnet group"
  subnet_ids = ["${aws_subnet.private-subnet1.id}", "${aws_subnet.private-subnet2.id}"]
}


resource "aws_db_instance" "db" {
  allocated_storage    = "20"
  storage_type         = "gp2"
  engine               = "mysql"
  engine_version       = "5.7.22"
  instance_class       = "db.t2.micro"
  name                 = "mydb"
  username             = "admin"
  password             = "admin"
  parameter_group_name = "db-mysql"
  db_subnet_group_name = "db-subnet"
}
我在应用terraform时遇到此错误

Error: Error creating DB Subnet Group: DBSubnetGroupDoesNotCoverEnoughAZs: DB Subnet Group doesn't meet availability zone coverage requirement. Please add subnets to cover at least 2 availability zones. Current coverage: 1
    status code: 400, request id: 1bc7f2db-3ad7-41d9-93d0-6cbe3c0adfec

  on terraform.tf line 24, in resource "aws_db_subnet_group" "db-subnet":
  24: resource "aws_db_subnet_group" "db-subnet" {



Error: Error creating DB Instance: DBSubnetGroupNotFoundFault: DBSubnetGroup 'db-subnet' not found.
    status code: 404, request id: a4264af9-c9ac-4241-993f-e8c62e348247

  on terraform.tf line 30, in resource "aws_db_instance" "db":
  30: resource "aws_db_instance" "db" {

这些错误对于问题是非常清楚的,所以让我们把它们分解一下

第一个错误与以下事实有关:创建每个子网时未指定。db子网组必须至少跨越2个az以实现高可用性,并且您没有为子网指定az,因此它们是在同一个子网中创建的。将
availability\u zone
参数添加到使用不同az的两个子网,无论您使用的是哪个区域

资源“aws_子网”“专用子网1”{
vpc_id=“${aws_vpc.main.id}”
cidr_block=“10.0.1.0/24”
可用性_zone=“”
}
资源“aws_子网”“专用子网2”{
vpc_id=“${aws_vpc.main.id}”
cidr_block=“10.0.2.0/24”
可用性_zone=“”
}
第二个错误与以下事实有关:在您的
aws\u db\u实例中,您没有引用正在创建的子网组资源,而是按名称指定了硬编码的子网组。Terraform不知道依赖关系,在尝试创建您定义的依赖关系时,并行使用不存在的依赖关系。换成

db\u subnet\u group\u name=“${aws\u db\u subnet\u group.db subnet.name}”
第二个错误将消失,然后您可以解决第一个问题