移除0.0.0.0/0白名单后,Atlas与AWS VPC对等连接及Lambda访问失败
关联VPC的Lambda无流量通过VPC,无法连接MongoDB Atlas集群问题排查
环境背景
- 已完成AWS VPC与MongoDB Atlas集群的VPC对等连接搭建(手动创建并接受)
- Lambda函数关联该VPC,由Cognito触发,负责与MongoDB通信
- 该VPC未配置互联网网关,仅通过对等连接访问Atlas集群
相关Terraform VPC配置
data "aws_availability_zones" "available" {} # VPC resource "aws_vpc" "lambda_vpc" { cidr_block = var.vpc_cidr enable_dns_hostnames = true enable_dns_support = true tags = { "Name" = "${terraform.workspace}_vpc_for_lambda" } } # Subnets resource "aws_subnet" "vpc_private_subnet" { depends_on = [aws_vpc.lambda_vpc] count = length(data.aws_availability_zones.available.names) vpc_id = aws_vpc.lambda_vpc.id cidr_block = # the cidr for the subnet (removed for this post) availability_zone = data.aws_availability_zones.available.names[count.index] } # Route table resource "aws_route_table" "lambda_route_table" { vpc_id = aws_vpc.lambda_vpc.id } # Security Groups resource "aws_security_group" "lambda_security" { name = "lambda_vpc_security_group" vpc_id = aws_vpc.lambda_vpc.id egress { description = "The required network traffic rule for connecting to Atlas" protocol = "6" # TCP协议 from_port = 27015 to_port = 27017 cidr_blocks = var.mongodb_cidr_block } }
问题现象
- 初始状态:MongoDB白名单包含AWS VPC的CIDR块及
0.0.0.0/0,Lambda可正常连接集群 - 修改后:移除
0.0.0.0/0后,Lambda无法连接集群;尝试将Lambda安全组ID加入白名单,问题依旧 - 补充调试:VPC流日志显示Lambda无任何流量通过VPC
问题排查及解决建议
1. 子网与路由表关联缺失
- 检查Lambda子网配置:确认Lambda函数的VPC配置中,是否选择了Terraform创建的
vpc_private_subnet。如果未关联子网或关联错误,流量根本不会进入VPC。 - 补全日子网路由关联:当前Terraform仅创建了
lambda_route_table,但未绑定到子网。添加以下配置完成关联:resource "aws_route_table_association" "private_subnet_assoc" { count = length(aws_subnet.vpc_private_subnet) subnet_id = aws_subnet.vpc_private_subnet[count.index].id route_table_id = aws_route_table.lambda_route_table.id }
2. 路由表规则验证
- 确认
lambda_route_table中已添加指向MongoDB Atlas对等连接的路由:目标地址为Atlas集群的CIDR块,下一跳为对等连接ID。 - 确保该路由表已通过上述关联配置绑定到Lambda所在子网。
3. 安全组与白名单配置修正
- Lambda安全组出规则:确认
var.mongodb_cidr_block对应的值是MongoDB Atlas集群侧的CIDR块(而非AWS VPC的CIDR),避免流量方向错误。 - MongoDB白名单配置:跨VPC对等连接场景下,Atlas无法识别AWS安全组ID,需添加AWS VPC的CIDR块到白名单,同时确认Atlas侧对等连接状态为
ACTIVE。
4. Lambda VPC访问配置验证
- 检查Lambda控制台的VPC配置项:确认已正确选择目标VPC、子网和安全组,无配置遗漏。
- DNS解析验证:可在Lambda代码中添加域名解析日志,或检查VPC流日志是否有UDP 53端口的DNS请求,确保Lambda能正常解析Atlas集群域名。
5. 对等连接双向配置检查
- AWS侧:确认对等连接状态为“已接受”,无配置错误。
- Atlas侧:确认对等连接已关联到集群,且Atlas路由表中添加了指向AWS VPC CIDR的路由规则,保证双向流量可达。
内容的提问来源于stack exchange,提问作者Edouard Finet
相关产品推荐
相关产品推荐

