Muk*_*ain 5 amazon-web-services node.js amazon-cloudfront aws-lambda
我正在开发一个使用 mongodb dataset-generator 生成数据的节点项目,并且我已将数据生成服务器代码添加到 AWS 的 Lambda,并将其公开给 AWS 的 api 网关。
所以现在的问题是 CloudFront在 30 秒后超时请求。问题是我正在进行的计算不能分解为多个 API 命中。因此,社区中的任何人都可以在这里帮助我,或者可以告诉我一些替代方案,让我能够满足不会超时的请求。
我相信我最初误解了您所遇到的问题的本质。
所以现在的问题是CloudFront在30秒后超时请求
由于您提到了 CloudFront,我假设您已在 API 网关端点前面显式配置了 CloudFront。
您可能确实没有这样做,因为 API Gateway隐式使用“AWS Edge Network”(又名 CloudFront)中的服务来提供其部分服务。
我的假设是 API Gateway 的“隐藏”CloudFront 发行版与标准 CloudFront 发行版具有不同的行为,但显然,此处的情况并非如此。
事实上,API网关也有30秒的响应超时,并且Can Be Increased?是No。因此,“CloudFront”超时本质上与 API Gateway 施加的超时相同。
当然,这将优先于 Lambda 函数上任何更长的超时。
没有简单且明显的解决方法。这似乎是一项超出 API 网关设计范围的任务。
一种选择是要求分页——当 API 强加给我时,我个人倾向于不喜欢这种选择。我真的很讨厌……只要给我数据,我就能处理它……但它有它的实际应用。如果请求的行数为 1000000,则返回行 1 到 1000,并返回next_url将获取行 1001 到 2000 的 a。
另一种选择是初始函数将请求提交给第二个 lambda 函数,使用异步调用进行处理,并返回重定向,将用户发送到可以获取数据的新 URL。现在,请听我说,因为这个解决方案听起来确实很糟糕,但理论上是可行的。异步函数将在后台完成工作,并将响应存储在 S3 中。获取数据的 URL 将是第三个 lambda 函数,该函数将轮询要存储数据的 S3 存储桶中的密钥,例如每秒一次,持续 20 秒。如果该文件显示,它将预先签署该位置的 URL,并向浏览器发出最终重定向,其中签名的 URL 作为Location. 如果文件没有显示,它会将浏览器再次重定向回自身,以便轮询将继续,直到文件显示或浏览器厌倦了重定向循环。
粗略?是的。可行吗?大概。好主意?这是有争议的......但似乎您正在做的事情实际上超出了 API Gateway 的基本设计参数,因此要么需要一个相当复杂的解决方法,要么您希望在 API Gateway 之外的其他地方实现它。
当然,您可以编写自己的“API 网关”,它在 EC2 上运行并直接通过 Lamdba API 调用 Lambda 函数并将结果返回给调用者 - 因此 Lambda 仍然处理工作和扩展,但您可以避免 30 秒超时。30 秒是等待网络响应的较长时间。
小智 5
我发现这是一个老问题,但需要说明的是,从 2017 年 3 月开始,可以更改源响应超时和保持活动超时。
Origin 响应超时的最大值为 60 秒,但如果需要,AWS 可以将值增加到 180 秒(有支持请求)

| 归档时间: |
|
| 查看次数: |
10160 次 |
| 最近记录: |