为什么我无法从私有 Amazon VPC 内的 EC2 或 Lambda 实例发送 SES 电子邮件?

1 分钟阅读
0

我想使用 Amazon Simple Email Service (SES) 从 Amazon Virtual Private Cloud (VPC) 内的 Amazon Elastic Compute Cloud (Amazon EC2) 实例或 AWS Lambda 函数发送电子邮件。

简短描述

默认情况下,您在 Amazon VPC 内部署的 Amazon EC2 实例和 Lambda 函数无法直接访问互联网。要发送电子邮件,Amazon SES API 需要与互联网建立出站连接才能与 Amazon SES 服务通信。

解决方法

将 Amazon SES SMTP 接口与 Amazon VPC 端点配合使用

要使用 Amazon SES 简单邮件传输协议 (SMTP) 接口发送电子邮件,请完成以下步骤:

  1. 在 Amazon VPC 中为 Amazon SES SMTP 服务创建新的 Amazon VPC 端点
    **注意:**Amazon VPC 端点不支持跨 AWS 区域的请求。请在要发出 API 调用的同一区域创建端点。
  2. 验证您的实例或 Lambda 函数的访问控制列表 (ACL) 是否允许出站流量流向 Amazon SES SMTP 端点。如果您使用 Lambda 函数,请确认您已将 Amazon SES SMTP 端点关联到与 Lambda 函数相同的子网。
  3. 更新您的应用程序,使其使用 SMTP 协议,并连接到 Amazon SES SMTP 端点。

将 Amazon SES API 连接到互联网

**先决条件:**检查实例角色或 Lambda 执行角色是否具有 ses:SendEmailses:SendRawEmail 权限。此外,请验证您的电子邮件地址身份域身份

要使用 Amazon SES API,请在公有子网中设置一个 NAT 网关,以允许您的私有子网访问互联网。您还可以在公有子网中部署并配置代理服务器,以转发来自私有子网的互联网流量。

然后,[测试您与 Amazon SES SMTP 端点的连接](https://docs.aws.amazon.com/ses/latest/dg/send-email-smtp-client-command-line.html)。

**注意:**默认情况下,Amazon EC2 会限制所有实例上通过 SMTO 端口 25 的出站流量

相关信息

使用 Amazon SES SMTP 接口发送电子邮件

授予 Lambda 函数访问 Amazon VPC 中资源的权限

如何解决 Amazon SES 的 SMTP 连接或超时问题?

AWS 官方
AWS 官方已更新 2 个月前