【问题标题】:AWS lambda is unable to connect to SMTP outside AWSAWS lambda 无法连接到 AWS 外部的 SMTP
【发布时间】:2021-11-16 01:48:42
【问题描述】:

我正在使用 python 脚本通过 lambda 函数发送电子邮件。 lambda 函数连接到 VPC 并作为执行角色允许访问 VPC。

部署函数并按下测试后大约需要8分钟,然后返回以下错误:

{
      "errorMessage": "[Errno 97] Address family not supported by protocol",
      "errorType": "OSError",
      "requestId": "3d4a93d5-2ded-46e1-a480-9305d66d4ae5",
      "stackTrace": [
        "  File \"/var/task/lambda_function.py\", line 9, in lambda_handler\n    send_email()\n",
        "  File \"/var/task/lambda_function.py\", line 44, in send_email\n    mserver = smtplib.SMTP(SERVER, PORT)\n",
        "  File \"/var/lang/lib/python3.9/smtplib.py\", line 255, in __init__\n    (code, msg) = self.connect(host, port)\n",
        "  File \"/var/lang/lib/python3.9/smtplib.py\", line 341, in connect\n    self.sock = self._get_socket(host, port, self.timeout)\n",
        "  File \"/var/lang/lib/python3.9/smtplib.py\", line 312, in _get_socket\n    return socket.create_connection((host, port), timeout,\n",
        "  File \"/var/lang/lib/python3.9/socket.py\", line 843, in create_connection\n    raise err\n",
        "  File \"/var/lang/lib/python3.9/socket.py\", line 826, in create_connection\n    sock = socket(af, socktype, proto)\n",
        "  File \"/var/lang/lib/python3.9/socket.py\", line 232, in __init__\n    _socket.socket.__init__(self, family, type, proto, fileno)\n"
      ]
}

如果我在 lambda 之外运行此脚本,它可以工作,但是当我在 lambda 函数中部署和测试时,它会返回此错误。

还有其他人遇到过这个问题吗?

【问题讨论】:

    标签: python amazon-web-services aws-lambda amazon-vpc smtplib


    【解决方案1】:

    请参阅KB article:如何从我的 Amazon EC2 实例或 AWS Lambda 函数中移除对端口 25 的限制?

    默认情况下,AWS 会阻止所有 EC2 实例和 Lambda 函数的端口 25 (SMTP) 上的出站流量。如果您想在端口 25 上发送出站流量,您可以请求取消此限制。

    或者,考虑使用简单电子邮件服务 (SES)。见How do I send email using Lambda and Amazon SES?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2019-11-08
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2017-12-13
      相关资源
      最近更新 更多