AWS AppRunner(VPC出站流量)无法连接AWS SES求助
AWS AppRunner接入VPC后SES连接超时问题排查
关于IAM权限
不需要额外IAM权限,但需根据SES调用场景确认细节:
- 若FastAPI通过SMTP协议调用SES发邮件:IAM角色权限不作用于SMTP认证,必须使用AWS专门生成的SES SMTP凭证(从IAM用户创建,而非角色密钥)。当前的
AmazonSESFullAccess仅覆盖SES API调用,不包含SMTP身份验证,这是常见误区。 - 若代码通过SES API(比如boto3的
send_email/send_raw_email)发邮件:现有AmazonSESFullAccess权限已足够,但要确认是否正确配置了SES的VPC接口端点(而非SMTP端点),且端点安全组允许AppRunner安全组的443端口访问。
关于子网路由表规则
需要根据调用场景调整路由表:
- SMTP协议场景:AWS SES无SMTP的VPC端点,AppRunner访问
email-smtp.us-east-1.amazonaws.com的465/587端口必须通过NAT网关出站到公网。请确认:- 私有子网路由表中,
0.0.0.0/0路由指向NAT网关(仅保留S3前缀列表指向VPC端点的路由,其余公网流量走NAT)。 - AppRunner配置的VPC子网关联了该路由表。
- 私有子网路由表中,
- SES API场景:需配置SES的VPC接口端点(服务名称为
com.amazonaws.<区域>.ses),此时路由表会自动添加指向该端点的路由,但要确保:- 接口端点安全组允许AppRunner安全组发起443端口的入站请求。
- 私有子网路由表中,SES服务前缀(无官方前缀列表,可手动添加
*.ses.<区域>.amazonaws.com路由指向接口端点ENI,或依赖接口端点自动路由)。
额外排查点
- 确认AppRunner安全组允许出站访问465(SMTP)或443(SES API)端口。
- SES沙箱环境下,必须验证发件人和所有收件人邮箱地址,否则会触发静默失败或超时。
- 检查代码中的SES端点配置:用API时是否指定VPC端点域名;用SMTP时是否正确填写服务器地址和端口。
内容的提问来源于stack exchange,提问作者Carmelo Acosta
相关产品推荐
相关产品推荐

