是否可以从等式中删除 API 网关以通过 public 互联网为 Lambda 提供服务?

Is it possible to remove API Gateway from the equation to serve Lambda over public internet?

目前,我的应用程序驻留在我使用 HTTP API(API 网关 V2)服务的 lambda 中。此设置存在于多个区域。意思是,API 网关在访问同一区域中的 DynamoDB Global Table 的同一区域调用 lambda。我使用 Route 53 为离用户最近的 API 网关提供服务。

我遇到的问题:API 网关不支持从 http 到 https 的重定向。我可以使用 CloudFront 实现这一目标。但是,它会增加成本和延迟。

我可以从等式中删除 API 网关并使用 Lambda@Edge 访问用户附近的 DynamoDB Table 吗? CloudFront 可以用来替代 API 网关吗?

是的,你可以。 docs 写:

Functions triggered by origin request and response events as well as functions triggered by viewer request and response events can make network calls to resources on the internet, and to AWS services such as Amazon S3 buckets, DynamoDB tables, or Amazon EC2 instances.

但是,与常规 lambda 相比,lambda@edge 的功能有许多限制。例子是:

  • 仅python和nodejs,
  • 调试困难,因为 lambda 日志在运行时将在区域中,而不是在一个中心区域中,
  • 调用 DynamoDb 的超时限制(5 或 30 秒)取决于其来源或查看器函数,
  • 没有 lambda 层
  • 查看器端功能的最大内存为 128 MB
  • 查看器端函数的部署包大小最大为 1 MB

因此,如果您可以处理 lambda@edge 的这些和其他限制,那么您可以使用它来处理 DynamoDb。