创建AWS RDS实例报错DB实例与EC2安全组不在同一VPC问题咨询
错误根因
你没有为RDS实例指定绑定自定义VPC的aws_db_subnet_group资源,AWS默认会将未配置子网组的RDS实例创建到账户的默认VPC内,而你关联的数据库安全组归属你新建的mainvpc,两者所属VPC不一致,直接触发该报错。
修复方案
- 新增DB子网组资源,将你当前VPC下的所有子网加入该组:
resource "aws_db_subnet_group" "main" { name = "main-db-subnet-group" subnet_ids = [aws_subnet.public-subnet-1.id, aws_subnet.private-subnet-1.id] tags = { Name = "Main DB Subnet Group" } }
- 在
aws_db_instance配置中新增db_subnet_group_name参数,关联上述子网组:
resource "aws_db_instance" "db" { # 保留原有配置不变,新增以下参数 db_subnet_group_name = aws_db_subnet_group.main.id # 不需要公网访问RDS可新增以下参数 publicly_accessible = false }
- 修正安全组的配置问题,避免后续业务访问异常:
- 你的wp安全组入站规则同时配置了
self = true和cidr_blocks = ["0.0.0.0/0"],两者存在逻辑冲突,若要允许所有IP访问对应端口,删除self = true即可。 - 你的db安全组入站规则当前仅配置了
self = true,仅允许同安全组的资源访问3306端口,而你的EC2实例绑定的是wp安全组,后续会无法访问数据库,修改入站规则如下:
resource "aws_security_group" "db" { description = "Allow WordPress inbound traffic" vpc_id = aws_vpc.mainvpc.id ingress { description = "Wordpress traffic" protocol = "tcp" from_port = 3306 to_port = 3306 # 允许wp安全组的资源访问 security_groups = [aws_security_group.wp.id] } # 保留原有出站、标签等配置不变 } - 你的wp安全组入站规则同时配置了
内容的提问来源于stack exchange,提问作者danel1
相关产品推荐
相关产品推荐

