VPC内Lambda函数访问AWS SES超时,是否需指定客户端端点?
解决方案:初始化SES Client时必须指定VPC端点URL
是的,你的Lambda函数超时的核心原因就是没有指定SES的VPC端点URL——默认的SES Client会尝试通过公网访问SES服务,但处于VPC内的Lambda如果没有配置公网出口(如NAT网关),请求会因无法连通而超时。
具体操作步骤
获取VPC端点URL
登录AWS控制台,进入VPC服务的「端点」页面,找到你创建的SES VPC端点,在「详细信息」里复制其DNS名称,格式通常为https://vpce-xxxxxx.ses.<你的区域>.vpce.amazonaws.com。修改SES Client初始化代码
在初始化SESClient时,通过endpoint参数指定上述VPC端点URL,示例代码如下:const { SESClient, SendEmailCommand } = require("@aws-sdk/client-ses"); // 替换为你的VPC端点URL和AWS区域 const sesVpcEndpoint = "https://vpce-xxxxxxxxxxxxxx.ses.us-east-1.vpce.amazonaws.com"; const awsRegion = "us-east-1"; const sesClient = new SESClient({ endpoint: sesVpcEndpoint, region: awsRegion }); // 后续发送邮件逻辑保持不变 const sendEmailCommand = new SendEmailCommand({ // 你的邮件参数 }); await sesClient.send(sendEmailCommand);
额外检查项
- 确认VPC端点的安全组允许Lambda所在安全组发起**443端口(HTTPS)**的入站请求
- 确认VPC的路由表中已添加路由规则,将SES服务前缀(如
com.amazonaws.<区域>.ses)指向该VPC端点
内容的提问来源于stack exchange,提问作者tteguayco
相关产品推荐
相关产品推荐

