【发布时间】:2019-06-05 08:27:06
【问题描述】:
我们在 ECS 中实现了一个前端。该前端与 API 网关通信,后者又调用 Lambda 函数。我们正在为此架构实施灾难恢复解决方案。这不是完整的架构,但足以解决这个问题。因此,我们对 DNS 故障转移、路由策略等非常有把握,并且在为前端实施 DR 方面我们做得很好。现在我们转到第二部分,即 API Gateway 和 Lambda。对于 API 网关,我们得出结论,如果前端在 T 时间内没有收到响应,则前端可以检查 API 网关的健康状况,并将 T+delta t 作为 RTO。如果 API 网关不健康,它将向其他 AWS 区域的 API 网关发送请求。到这里为止我们都很好。但问题是,如果 lambda 在区域 A 中不起作用并且 API 网关在区域 B 中不起作用怎么办。在这种情况下,区域 A 的 API 网关应该能够调用区域 B 的 lambda,它也应该能够调用区域的 lambda一个健康的时候。
我想到的是,在我的 Terraform 代码中,我可以放置一些逻辑(显然以声明方式或一些变通方式),以便 API 网关应该只调用健康的 lambda 并将自身集成回 lambda当区域 A 的 lambda 恢复到健康状态时,区域 A 的值。这可以通过一些持续的健康检查来检查。但是,这需要一些努力。
虽然这是 AWS Lambda 无法在整个区域运行的罕见场景,但客户端是 E COM 巨头,如果我们提到 T+delta t 的 RTO,它应该在限制范围内。我们信任 AWS,但我们也希望在所有场景中都安全并具有最小的 RTO 和 RPO。
有没有更好的方法呢?我们能否以某种方式将多个 lambda 集成到 API 网关?
【问题讨论】:
-
@LachlanLindsay Healthcheck 我能做到。这样我可以解决它,但问题是我是否可以有更好的方法从 API 网关调用多个 lambda?
标签: amazon-web-services aws-lambda aws-api-gateway serverless-framework