Node.js Amazon Cloudfront超时错误

Node.js Amazon Cloudfront超时错误,node.js,amazon-web-services,aws-lambda,amazon-cloudfront,Node.js,Amazon Web Services,Aws Lambda,Amazon Cloudfront,我正在从事一个节点项目,该项目使用mongodb dataset generator生成数据,我已将数据生成服务器代码添加到AWS的Lambda中,我已将其公开给AWS的api网关 现在的问题是30秒后的云阵面。问题是我所做的计算不能被分解成多个API命中。所以,社区中的任何人都可以在这里帮助我,或者告诉我一些替代方法,让我可以点击不会超时的请求。我相信我最初误解了您遇到的问题的本质 现在的问题是CloudFront在30秒后超时请求 由于您提到CloudFront,我假设您已经在API网关端点

我正在从事一个节点项目,该项目使用mongodb dataset generator生成数据,我已将数据生成服务器代码添加到AWS的Lambda中,我已将其公开给AWS的api网关


现在的问题是30秒后的云阵面。问题是我所做的计算不能被分解成多个API命中。所以,社区中的任何人都可以在这里帮助我,或者告诉我一些替代方法,让我可以点击不会超时的请求。

我相信我最初误解了您遇到的问题的本质

现在的问题是CloudFront在30秒后超时请求

由于您提到CloudFront,我假设您已经在API网关端点前面显式地配置了CloudFront

您可能没有这样做,因为API网关隐式地使用来自“AWS边缘网络”(也称为CloudFront)的服务来提供其服务的一部分

我的假设是,API网关的“隐藏”CloudFront发行版与标准CloudFront发行版具有不同的行为,但显然,在这里,情况并非如此

事实上,
可以增加吗?
。因此,“CloudFront”超时与API网关施加的超时基本相同

当然,这将优先于Lambda函数上任何更长的超时

没有一个简单而明显的解决办法。这似乎是一项超出API网关设计范围的任务

一种选择——我个人不喜欢API强迫我这么做——是要求分页。我真的很讨厌。。。只要给我数据,我就能处理。。。但它有它的实际应用。如果请求为1000000行,则返回第1行到第1000行,并返回将获取第1001行到第2000行的
下一个\u url

另一个选项是,初始函数使用异步调用将请求提交给第二个lambda函数进行处理,并返回重定向,该重定向将用户发送到可以获取数据的新URL。现在,坚持我的观点,因为这个解决方案听起来很可怕,但理论上是可行的。异步函数将在后台完成工作,并将响应存储在S3中。获取数据的URL将是第三个lambda函数,它将轮询存储数据的S3存储桶中的密钥,比如每秒轮询一次,持续20秒。如果该文件出现,它将对该位置的URL进行预签名,并将签名的URL作为
位置
向浏览器发出最终重定向。如果文件未显示,它将再次将浏览器重定向回自身,以便继续轮询,直到文件显示或浏览器厌倦重定向循环

粗略的?对可行的可能好主意?这是有争议的。。。但似乎您正在做的事情实际上超出了API网关的基本设计参数,因此需要一个相当复杂的解决方案,当然您希望在API网关之外的其他地方实现这一点


当然,您可以编写自己的“API网关”,在EC2上运行,并通过Lamdba API直接调用Lambda函数,然后将结果返回给调用方——因此Lambda仍然可以处理工作和扩展,但可以避免30秒的超时。等待web响应30秒是一段很长的时间。

我知道这是一个老问题,但需要指出的是,从2017年3月开始,可以更改原始响应超时和保持活动超时

原点响应超时的最大值为60秒,但如果需要,AWS可以将该值增加到180秒(有支持请求)


除了“不要通过CloudFront发送请求”之外,没有简单的解决方案。无法更改CloudFront中的30秒超时。您想要什么样的解决方案,以及这些请求实际需要多长时间?是的,我在文档中看到超时设置无法更改,这些请求为数据库生成数据。因此,用户传递他想要的数据行数,并在Lambda上生成它们。所以这完全取决于用户,他可以通过1行或1米行。感谢您的深入回答和您的时间。我采用了最后一种方法,使用AWS的ECS,它的工作方式对我来说就像一种魅力。谢谢你的帮助。