Vin*_*ado 0 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" {
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"
}
Run Code Online (Sandbox Code Playgroud)
我在应用 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" {
Run Code Online (Sandbox Code Playgroud)
这些错误已经很清楚地说明了问题,所以让我们把它们分解一下。
第一个错误与您在创建每个子网时未指定可用区域有关。数据库子网组必须跨越至少 2 个可用区才能实现高可用性,并且您没有为子网指定可用区,因此它们是在同一个子网中创建的。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>"
}
Run Code Online (Sandbox Code Playgroud)
第二个错误与以下事实有关:在您的 中aws_db_instance
,您没有引用正在创建的子网组资源,而是按名称指定硬编码的子网组。Terraform 不知道依赖关系,并在尝试创建您定义的依赖项时并行使用不存在的依赖项。将其更改为
db_subnet_group_name = "${aws_db_subnet_group.db-subnet.name}"
Run Code Online (Sandbox Code Playgroud)
第二个错误将会消失,然后您可以解决第一个问题。
归档时间: |
|
查看次数: |
2821 次 |
最近记录: |