【问题标题】:Why does my Lambda function timeout connecting to SES VPC Endpoint?为什么我的 Lambda 函数连接到 SES VPC Endpoint 会超时?
【发布时间】:2020-11-26 06:43:07
【问题描述】:

Since April 2020,AWS 支持 SES(简单电子邮件服务)的 VPC 端点。尽管如此,我无法让 Lambda 使用该端点与 SES 进行通信。它总是超时。可能这是因为 SES VPC Endpoints 仅支持 VPC 中的 EC2 实例而不支持 Lambda?

我使用 Terraform 描述了我的基础架构,如 this gist 中所述。 ses_lambda.tf 定义了基础设施并基本上实现了this guidesesTest.js 是我的 Lambda 函数。 terraform-show.out 显示terraform show 的结果仅限于ses_lambda.tf 定义的资源。

正如您在ses_lambda.tf 中看到的那样,SES 端点的安全组允许来自 VPC 的 CIDR 块中任何 IP 的任何 SMTP 端口(25、465、587、2465 或 2587)上的所有流量。所以我很困惑为什么这不起作用......

【问题讨论】:

  • 你解决了吗?
  • 我认为解决方法是将端点视为 SMTP,而不是 AWS SES API。
  • 我的解决方案是:向 SNS 发布消息,使用非 VPC lambda 读取 SNS 主题,然后从该 lambda 调用 SES。

标签: aws-lambda amazon-ses amazon-vpc


【解决方案1】:

看起来 SES VPC 端点是 SMTP 端点而不是 SES API 端点。 The guide 没有明确说明,但确实提到了 SMTP 端口和端点。

我创建了一个端点,它生成的私有 DNS 名称是 email-smtp.us-east-1.amazonaws.com (SMTP)。 SDK 尝试连接到 email.us-east-1.amazonaws.com (SES API)。

看来解决方案是使用 SMTP 或设置 NAT 网关。

更新:确认 SMTP 在 Lambda 中通过 SES VPC 端点工作(如预期的那样)。

【讨论】:

  • 您能否详细说明一下。您使用了哪个端点?您是否尝试过使用 SMTP 端点?
  • 我同意对此进行详细说明的请求。
【解决方案2】:

当我听到 AWS 超时问题时,我首先检查的始终是 IAM。 Lambda 函数是否具有授予适当权限以访问您账户中的 SES 的 IAM 策略和执行角色?

https://aws.amazon.com/premiumsupport/knowledge-center/lambda-send-email-ses/

【讨论】:

  • 该链接未提及 SES VPC 端点。它确实列出了三个要求:“1) Lambda 执行 API 调用的 AWS Identity and Access Management (IAM) 权限。2) 经过验证的 Amazon SES 身份(域或电子邮件地址)。3) 具有发送电子邮件逻辑的 Lambda 函数通过亚马逊 SES。”我已经满足了所有这些,但它仍然无法正常工作。ses_send_email 是授予 SES 权限的 IAM 策略,它附加到 lambda 的角色。
猜你喜欢
  • 2019-06-17
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2019-03-30
  • 2017-03-09
  • 2019-09-17
  • 2021-07-23
相关资源
最近更新 更多