我正在尝试建立并运行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
添加了依赖设置来等待子网创建,但是遇到了问题。
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]
}
在运行Terraform时,我在配置上遇到错误:
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"
答案 0 :(得分:0)
似乎参数值错误。在其他地方创建的db_subnet_group_name给出输出ID / ARN。因此,您需要使用id值。尽管depends_on子句看起来还不错。
db_subnet_group_name = aws_db_subnet_group.eu-west-3a-private.id
所以这是正确的/您可以尝试使用arn代替id。
谢谢
阿什什
答案 1 :(得分:0)
DB子网组本身就是一个逻辑资源,它告诉AWS可以在VPC中安排数据库实例的位置。它不是直接指的是您要在其中进行的子网。
要创建数据库子网组,应使用aws_db_subnet_group
resource。然后,在创建数据库实例或集群时,可以直接通过名称引用它。
一个基本示例如下:
RUN addgroup -S -g 33 www-data \
&& adduser -S -D -u 33 -s /sbin/nologin -h /var/www -G www-data www-data \
&& chown -R www-data:www-data /var/www/
同样的情况也适用于使用Elasticache subnet groups的aws_elasticache_subnet_group
resource。
还值得注意的是,将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
}
添加到已经通过插值引用了从属资源的资源没有任何作用。 depends_on
元参数用于不公开仅直接提供此依赖项信息的参数的资源。