Иго*_*рей 28 amazon-web-services aws-api-gateway
我对API网关有一些问题.我制作了一些API方法,有时它们工作时间超过10秒,亚马逊返回504错误.以下是截图:
请帮忙!如何增加超时?
谢谢!
Cap*_*paj 29
到 2022 年,我们终于找到了解决方法。不幸的是,AWS 没有更改 API 网关,因此仍然是 29 秒,但是,您可以在 lambda 本身中使用内置 HTTPS 端点:Built-in HTTPS Endpoints for Single-Function Microservices 已确认没有超时 - 所以本质上您可以有完整的 15 分钟 lambda 超时窗口:https://twitter.com/alex_casalboni/status/1511973229740666883
例如,以下是使用 aws-cdk 和 typescript 定义带有 http 端点的函数的方法:
const backendApi = new lambda.Function(this, 'backend-api', {
memorySize: 512,
timeout: cdk.Duration.seconds(40),
runtime: lambda.Runtime.NODEJS_16_X,
architecture: Architecture.ARM_64,
handler: 'lambda.handler',
code: lambda.Code.fromAsset(path.join(__dirname, '../dist')),
environment: {
...parsedDotenv
}
})
backendApi.addFunctionUrl({
authType: lambda.FunctionUrlAuthType.NONE,
cors: {
// Allow this to be called from websites on https://example.com.
// Can also be ['*'] to allow all domain.
allowedOrigins: ['*']
}
})
Run Code Online (Sandbox Code Playgroud)
Ran*_*Ran 17
现在,根据http://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html,Lambda调用或HTTP集成的默认限制为30秒,并且此限制不可配置.
E.J*_*nan 11
你不能增加超时,至少现在不行.您的终点必须在10秒或更短时间内完成.您需要努力提高端点的速度.
http://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
joa*_*aes 10
Lambda 函数将在达到最大值后超时。5 分钟;API 网关请求将在 29 秒后超时。你不能改变它,但你可以用异步执行模式解决它,我写了我的博客文章:
https://joarleymoraes.com/serverless-long-running-http-requests/
截至2017年12月,最大值仍为29秒,但应该能够自定义超时值.
这可以在APIGateway中每种方法的"集成请求"中设置.
小智 5
我想评论“joarleymoraes”帖子,但没有足够的声誉。唯一要补充的是,您不必重构以使用异步,这仅取决于您的后端以及如何拆分它+您的客户端重试。
如果您没有看到高百分比的 504 并且您还没有准备好进行异步处理,您可以实现客户端重试并对其进行指数退避,这样它们就不会出现永久性故障。
AWS 开发工具包自动使用回退实现重试,因此它可以帮助简化重试,尤其是因为Lambda 层将允许您为您的函数维护开发工具包,而无需不断更新您的部署包。
一旦这样做,就会导致对这些超时的可见性降低,因为它们不再是永久性故障。这可以为您争取一些时间来处理核心问题,即您首先看到的是 504。这当然可能意味着重构您的代码以获得更多响应,将大型功能拆分为更多“微服务”类型的概念并减少外部网络调用。
重试的另一个好处是,如果您重试来自应用程序的所有 5xx 响应,它可以涵盖您在正常执行期间可能会看到的许多不同问题。在所有应用程序中,通常认为这些问题永远无法 100% 避免,因此最好的做法是继续做最坏的打算!
综上所述,您仍然应该致力于减少 lambda 执行时间或实现异步。这将允许您将超时值设置为更小的数字,从而使您更快地失败。这对于减少对前端的影响有很大帮助,因为它不必等待 29 秒来重试失败的请求。
| 归档时间: |
|
| 查看次数: |
30719 次 |
| 最近记录: |