添加至VPC后AWS Lambda调用Amazon SES超时问题修复咨询
修复方案:Lambda加入VPC后调用SES超时问题
问题原因
Lambda加入VPC后默认部署在私有子网,没有直接访问公网的权限,而Amazon SES是需要通过公网(或VPC端点)访问的AWS服务,导致Lambda无法连接SES API,最终触发超时。
具体修复方案
方案一:配置NAT网关(推荐,适用于需访问多个公网服务的场景)
- 在VPC的公有子网中创建NAT网关,并绑定一个弹性IP(EIP)
- 为Lambda所在的私有子网的路由表添加路由规则:
0.0.0.0/0指向创建好的NAT网关 - 确保NAT网关所在的公有子网的路由表已配置
0.0.0.0/0指向Internet网关(IGW) - 检查Lambda的安全组,允许** outbound HTTPS(443端口)**流量
方案二:使用SES VPC端点(更安全,无需公网访问)
- 在VPC中创建SES的Interface类型VPC端点,选择与Lambda相同的子网和安全组
- 配置Lambda的安全组,允许向SES端点的443端口发起outbound流量
- 配置VPC端点的安全组,允许来自Lambda安全组的inbound 443端口流量
- 这种方式让Lambda直接通过VPC内部网络访问SES,无需走公网
方案三:拆分Lambda(业务逻辑分离场景)
- 将业务拆分为两个独立Lambda:
- 第一个Lambda加入VPC,专门负责访问EC2数据库
- 第二个Lambda不加入VPC,专门负责调用SES发送邮件
- 两个Lambda通过SQS消息队列、Step Functions等服务实现通信,避免单Lambda同时需要VPC内网和公网访问的冲突
额外检查项
- 确认Lambda执行角色拥有
ses:SendEmail权限(之前代码正常运行,此权限大概率已配置,但需排查) - 若使用NAT网关,确保NAT网关状态正常,弹性IP未被释放
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

