Joh*_*Fox 5 amazon-web-services terraform terraform-provider-aws
我正在尝试启动并运行 documentdb 集群,并使其在我创建的私有子网内运行。
depends_on在没有创建子网的情况下运行下面的配置,我收到以下错误消息:
Error: error creating DocDB cluster: DBSubnetGroupNotFoundFault: DB subnet group 'subnet-0b97a3f5bf6db758f' does not exist.
status code: 404, request id: 59b75d23-50a4-42f9-99a3-367af58e6e16
Run Code Online (Sandbox Code Playgroud)
添加了依赖设置以等待创建子网,但遇到了问题。
cluster_identifier = "my-docdb-cluster"
engine = "docdb"
master_username = "myusername"
master_password = "mypassword"
backup_retention_period = 5
preferred_backup_window = "07:00-09:00"
skip_final_snapshot = true
apply_immediately = true
db_subnet_group_name = aws_subnet.eu-west-3a-private
depends_on = [aws_subnet.eu-west-3a-private]
}
Run Code Online (Sandbox Code Playgroud)
在运行 terraform apply 时,我在配置上遇到错误:
Error: error creating DocDB cluster: DBSubnetGroupNotFoundFault: DB subnet group 'subnet-0b97a3f5bf6db758f' does not exist.
status code: 404, request id: 8b992d86-eb7f-427e-8f69-d05cc13d5b2d
on main.tf line 230, in resource "aws_docdb_cluster" "docdb":
230: resource "aws_docdb_cluster" "docdb"
Run Code Online (Sandbox Code Playgroud)
数据库子网组本身就是一种逻辑资源,它告诉 AWS 可以在 VPC 中的何处安排数据库实例。它并不是直接引用子网,而这正是您想要在那里做的。
要创建数据库子网组,您应该使用aws_db_subnet_group资源。然后,您可以在创建数据库实例或集群时直接通过名称引用它。
一个基本的例子如下所示:
resource "aws_vpc" "example" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "eu-west-3a" {
vpc_id = aws_vpc.example.id
availability_zone = "a"
cidr_block = "10.0.1.0/24"
tags = {
AZ = "a"
}
}
resource "aws_subnet" "eu-west-3b" {
vpc_id = aws_vpc.example.id
availability_zone = "b"
cidr_block = "10.0.2.0/24"
tags = {
AZ = "b"
}
}
resource "aws_db_subnet_group" "example" {
name = "main"
subnet_ids = [
aws_subnet.eu-west-3a.id,
aws_subnet.eu-west-3b.id
]
tags = {
Name = "My DB subnet group"
}
}
resource "aws_db_instance" "example" {
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
name = "mydb"
username = "foo"
password = "foobarbaz"
parameter_group_name = "default.mysql5.7"
db_subnet_group_name = aws_db_subnet_group.example.name
}
Run Code Online (Sandbox Code Playgroud)
同样的情况也适用于使用该资源的Elasticache 子网组。aws_elasticache_subnet_group
还值得注意的是,添加depends_on到已经通过插值引用依赖资源的资源不会执行任何操作。元depends_on参数适用于不公开仅直接提供此依赖关系信息的参数的资源。
看来参数值是错误的。在其他地方创建的 db_subnet_group_name 给出输出 id/arn。所以你需要使用 id 值。虽然depends_on子句看起来不错。
db_subnet_group_name = aws_db_subnet_group.eu-west-3a-private.id
Run Code Online (Sandbox Code Playgroud)
所以这是正确的/您可以尝试使用 arn 代替 id。
谢谢,
阿什什
| 归档时间: |
|
| 查看次数: |
6684 次 |
| 最近记录: |