You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:31:26