Amazon Cloudfront超时错误

我正在使用mongodb数据集生成器生成数据的节点项目,我已经将我的数据生成服务器代码添加到了AWS的Lambda,我已经公开到AWS的api网关。

所以现在的问题是,CloudFront在30秒后超时请求 。 而问题是,我正在做的计算不能分解成多个API命中。 那么社区的任何人都可以帮助我,或者可以告诉我一些替代scheme,让我可以打到不会超时的请求。

我相信我最初是误解了你正在经历的问题的性质。

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

自从您提到CloudFront以来,我认为您已经在API网关端点之前显式configuration了CloudFront。

由于API网关隐式使用来自“AWS Edge Network”(又名CloudFront)的服务来提供其服务的一部分,所以您可能确实没有这样做。

我的假设是,API Gateway的“隐藏的”CloudFront发行版与标准的CloudFront发行版具有不同的行为,但显然在这里并不是相关的任何范围。

事实上, API网关也有30秒的响应超时 , Can Be Increased? 是的。 因此,“CloudFront”超时基本上与API网关强制超时相同。

当然,这将优先于Lambda函数的更长时间。

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

一种select – 我个人倾向于不喜欢的时候,APIs强加给我 – 是要求分页。 我真的很讨厌这个…只是给我提供数据,我可以处理它,但它有其实际的应用。 如果请求是1000000行,则返回1到1000行,并返回将获取行1001到2000的next_url

另一个select是初始函数使用asynchronous调用将请求提交给第二个lambda函数进行处理,并返回一个redirect,将用户发送到可以提取数据的新URL。 现在,坚持我,因为这个解决scheme听起来真的很可怕,但它在理论上是可行的。 asynchronous函数将在后台完成工作,并将响应存储在S3中。 提取数据的URL将是第三个lambda函数,用于轮询要存储数据的S3存储桶中的密钥,例如每秒一次,持续20秒。 如果文件显示,它将预先签署该位置的URL,并发出最终redirect到浏览器与签名的URL作为Location 。 如果文件没有显示,它会重新将浏览器redirect到自己,以便轮询将继续,直到文件显示或浏览器厌倦了redirect循环。

手绘? 是。 是否可行? 大概。 好主意? 这是值得商榷的……但是,好像你正在做的事情超出了API网关的基本devise参数,所以要么是一个相当复杂的解决方法,要么在API网关以外的地方实现。

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