【问题标题】:Create aws rds instance using terraform?使用 terraform 创建 aws rds 实例?
【发布时间】:2019-08-12 23:55:52
【问题描述】:

我正在尝试使用 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" {

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    错误很清楚问题所在,所以让我们分解它们。

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

    resource "aws_subnet" "private-subnet1" {
      vpc_id = "${aws_vpc.main.id}"
      cidr_block = "10.0.1.0/24"
      availability_zone = "<an az from your region>"
    }
    
    resource "aws_subnet" "private-subnet2" {
      vpc_id = "${aws_vpc.main.id}"
      cidr_block = "10.0.2.0/24"
      availability_zone = "<a different az from your region>"
    }
    

    第二个错误与您的 aws_db_instance 中没有引用您正在创建的子网组资源而是按名称指定硬编码子网组这一事实有关。 Terraform 不知道依赖关系,并在尝试创建您定义的依赖关系时并行使用不存在的依赖关系。改成

    db_subnet_group_name = "${aws_db_subnet_group.db-subnet.name}"
    

    第二个错误会消失,然后你可以解决第一个问题。

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2021-10-11
      • 2017-02-14
      • 2018-02-08
      • 2018-12-31
      • 2021-08-01
      • 2021-03-02
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多