我有一个Django应用程序设置,可以使用django-allauth
连接到Twitter。流程都在本地工作,我在Lambda上遵循了相同的设置步骤来添加我的代币、站点等。
当我尝试访问登录url(/accounts/twitter/login/
(时,请求最终超时,并显示来自AWS Lambda:的消息
{"message": "Endpoint request timed out"}
超时事件之前来自zappa tail
的最后一条消息是:
[1619019159940] [DEBUG] 2021-04-21T15:32:39.939Z 7f66a0e3-58de-4612-82c0-54590d69676f Starting new HTTPS connection (1): api.twitter.com:443
我看到网关有30秒的超时时间,但我认为无论如何都不应该花这么长时间。在当地,这需要几秒钟的时间。
了解这些平台的人知道瓶颈可能在哪里,问题可能在哪里吗?或者有任何有针对性的问题可以帮助调试?
我已经检查并(暂时(排除了以下情况:
- 数据库后端是AWS Aurora无服务器,我确实担心双无服务器设置可能会导致速度慢。然而,Django管理命令(
zappa manage dev migrate
返回(的简单调用只需不到一秒钟的时间,所以我现在已经排除了这种可能性。此外,Admin仪表板加载良好,也可以访问数据库 - 我已经将dev和live URL作为有效的OAuth回调URL添加到Twitter的面板中
留下这个答案来帮助未来的搜索,尽管这不是我要走的路线。
感谢@Jens在评论中指出VPC问题。您需要向Lambda添加一个NAT网关服务,才能将公共互联网接入添加到专用专有网络。
"要授予您功能的互联网访问权限,其关联的VPC必须在公共子网中具有NAT网关(或NAT实例(">
来源:https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/
这是一个每小时收费的额外费用,因此可能无法使用无服务器(如果你使用它是为了节省费用和简化,而不是像我那样扩展(。