Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Cognito调用时Zappa Django Rest框架API超时_Django_Aws Lambda_Aws Api Gateway_Amazon Cognito_Zappa - Fatal编程技术网

AWS Cognito调用时Zappa Django Rest框架API超时

AWS Cognito调用时Zappa Django Rest框架API超时,django,aws-lambda,aws-api-gateway,amazon-cognito,zappa,Django,Aws Lambda,Aws Api Gateway,Amazon Cognito,Zappa,我正在使用Zappa将一个Django Rest框架API迁移到lambdas 此API也在弹性Beanstalk应用程序上运行,在那里工作良好。 首先,我在尝试连接数据库时收到错误消息, 然后我设置了lambda VPC和安全组,这个错误似乎消失了,但是,对身份验证端点(使用Cognito)的任何调用都会导致超时 我知道API网关硬编码为29秒后超时,但我认为这个端点不应该花费那么长时间 我启用了X射线,但它没有说太多,只是功能超时了 查看Cloudwatch日志,我可以指出它被卡住的时刻 

我正在使用Zappa将一个
Django Rest框架
API迁移到lambdas 此API也在弹性Beanstalk应用程序上运行,在那里工作良好。 首先,我在尝试连接数据库时收到错误消息, 然后我设置了lambda VPC和安全组,这个错误似乎消失了,但是,对身份验证端点(使用Cognito)的任何调用都会导致超时

我知道API网关硬编码为29秒后超时,但我认为这个端点不应该花费那么长时间

我启用了X射线,但它没有说太多,只是功能超时了

查看Cloudwatch日志,我可以指出它被卡住的时刻


09:10:09
[DEBUG] 2020-03-04T09:10:09.326Z 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981 Starting new HTTPS connection (1): cognito-idp.us-east-1.amazonaws.com:443

[DEBUG] 2020-03-04T09:10:09.326Z    2e2ba999-a6bf-42e0-a5f1-6b4c70e72981    Starting new HTTPS connection (1): cognito-idp.us-east-1.amazonaws.com:443

09:10:10

09:10:30
END RequestId: 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981
END RequestId: 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981

09:10:30
REPORT RequestId: 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981 Duration: 30030.18 ms Billed Duration: 30000 ms Memory Size: 512 MB Max Memory Used: 141 MB Init Duration: 469.61 ms XRAY TraceId: 1-5e5f7067-d06b5ff2aaa8b9c6218f7444 SegmentId: 6ef0fb0d7de15cfe Sampled: true
REPORT RequestId: 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981  Duration: 30030.18 ms   Billed Duration: 30000 ms   Memory Size: 512 MB Max Memory Used: 141 MB Init Duration: 469.61 ms    
XRAY TraceId: 1-5e5f7067-d06b5ff2aaa8b9c6218f7444   SegmentId: 6ef0fb0d7de15cfe Sampled: true   

09:10:30
2020-03-04T09:10:30.369Z 2e2ba999-a6bf-42e0-a5f1-6b4c70e72981 Task timed out after 30.03 seconds 
正如你所看到的,这个电话似乎被卡住了

[DEBUG] 2020-03-04T09:10:09.326Z    2e2ba999-a6bf-42e0-a5f1-6b4c70e72981    Starting new HTTPS connection (1): cognito-idp.us-east-1.amazonaws.com:443
我试图找到是否需要在Cognito上设置vpc/安全组,但没有找到任何相关内容。 知道是什么导致了这个问题吗

更新

我已经检查了VPC,并且有一个与之关联的internet网关

0.0.0.0/0 ig-xxxxxxxxx活动编号

这在VPC的路由表中

然后,我创建了一个NAT网关,并用NAT替换了表上的ig 我仍然会犯同样的错误

更新2

有一个与我的子网有显式子网关联的主路由表 然后,有一个NAT网关连接到其中一个子网和VPC,并具有弹性IP

如果我单击我的任何子网并转到“路由表”选项卡,我会看到类似的内容

172.31.0.0/16本地
0.0.0.0/0 nat-xxxxxxx

我转到
网络ACL
我看到:

Network ACL:
acl-xxxxx
Inbound rules

Rule #  Type  Protocol Port Range / ICMP Type Source Allow / Deny
100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW 
* ALL Traffic ALL ALL 0.0.0.0/0 DENY

Outbound rules

Rule # Type Protocol Port Range / ICMP Type Destination Allow / Deny
100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW 

* ALL Traffic ALL ALL 0.0.0.0/0 DENY

我缺少什么?

检查您的安全组是否允许通过NAT网关对0.0.0.0进行出站访问。我问这个问题的原因是,如果DB在VPC内部,它应该仍然可以无缝连接,但是Cognito使用一个可以通过Internet访问的HTTPS端点。如果配置的安全组不允许这样的出站连接,您的功能将超时。我已检查过,并且只有一个Internet网关(是否足够?),我尝试将其替换为NAT网关,但在公用子网上使用相同的错误Internet网关以允许入站/出站流量。如果您的Lambda功能位于仅具有专用子网的VPC内,则在公用子网中至少需要一个NAT网关来路由出站流量。请注意,NAT网关需要位于公共子网中。长话短说,它是这样的:Lambda->SG->公共子网中的NAT网关->互联网。如果您想对其进行故障排除,我建议您暂时忽略DB连接,从VPC中删除Lambda并尝试连接到Cognito。如果有效,那么问题肯定出在您的VPC配置上。@ThalesMinussi我已经用我采取的步骤更新了问题,我不明白我遗漏了什么,我有NAT网关,它与我的子网相关联,没关系。我正处在一个懒得去创造答案的日子里。我很高兴它成功了:)