这更像是我需要的建议。
当我们可以直接从应用程序执行 Lambda 函数时,为什么需要 API 网关?
API 网关提供了哪些缺失的部分?在使用裸 lambda 时我们会错过哪些部分?
答案1
我个人选择 API 网关而不是直接 Lambda 调用的几个原因:
遗产
最明显的例子是遗留情况,即您拥有一些需要引入 AWS SDK 才能进行 Lambda 调用的组件。有时引入 SDK 很容易,但有时,例如在纯 C 代码中,这样做可能很麻烦。无论哪种情况,从使用现有 REST 端点转移到 AWS 的 API 网关都更容易,因为大多数情况下都是类似的,只需更改或调用 URL 即可。
直接访问
在某些方面,这是 Legacy 的变体,但直接访问 REST 端点比访问 Lambda 端点要容易得多。值得注意的是,完全可以创建一个 Lambda 函数,该函数返回供人类通过浏览器查看的 HTML,并让他们通过直接调用为其提供服务的 API 网关来“访问”您的 Lambda。
验证
API 网关可以是未经身份验证的,也可以是通过 IAM 或 Cognito 进行身份验证的。拥有任何组件或用户无需身份验证即可访问的半秘密端点,甚至允许用户访问的完全公开的 Lambda 端点,都很有用。或者,您可以使用 AWS Cognito 支持的用户账户,这样您的用户就可以访问您的部分生态系统,而无需 IAM 账户本身。
成本和复杂性
我避免使用 API 网关的原因之一是它会增加成本。大多数情况下,成本不大,但当您开始大规模运行某些东西时,API 网关的成本可能是一个因素。当然,将 API 网关添加到您的部署中会使事情变得复杂。
答案2
将 API 网关与 Lambda 函数结合使用可以带来多种好处,并填补一些关键的缺失部分:
HTTP/S 端点:API Gateway 充当 Lambda 函数的前端服务,提供客户端可以与之交互的 HTTP/S 终端节点。如果没有 API Gateway,您将需要管理自己的基础设施来处理传入的 HTTP 请求并将其路由到适当的 Lambda 函数。
请求解析和验证:API Gateway 可以验证和解析传入的请求,包括查询参数、标头和请求正文。它允许您定义请求验证规则和模型,确保在调用 Lambda 函数之前传入的数据符合您的预期。
速率限制和节流:API Gateway 允许您配置速率限制和节流设置,以保护您的后端资源不会因过多请求而超负荷。这有助于防止滥用并确保您的应用程序在高负载下保持响应。
授权和认证:API Gateway 支持各种身份验证方法,包括 IAM、Lambda 授权器和自定义授权器。这允许您在调用底层 Lambda 函数之前控制对 API 的访问并实施安全策略。
API 文档:API Gateway 提供生成和托管 API 文档的工具,让开发者更轻松地了解如何与您的 API 进行交互。它可以根据您的 API 配置生成交互式 API 文档,包括请求和响应模型、端点和使用说明。
API 监控和日志记录:API Gateway 提供内置监控和日志记录功能,让您可以跟踪 API 使用情况、监控性能指标和解决问题。您可以直接从 AWS 管理控制台查看日志、指标和集成错误,也可以与其他监控工具集成以获得更深入的见解。
与其他 AWS 服务集成:API Gateway 与其他 AWS 服务(例如 AWS Lambda、Amazon DynamoDB、Amazon S3 和 AWS IAM)无缝集成。这允许您构建无服务器应用程序,充分利用 AWS 生态系统的全部功能,包括可扩展的数据存储、消息传递和身份管理。