API 网关专栏 · 第 35

API 网关如何实现 Serverless 架构

2025年06月05日
API 网关如何实现 Serverless 架构

简介

Serverless(无服务器)架构彻底改变了开发者构建和部署应用程序的方式,消除了服务器管理的开销,并实现了按需扩展。然而,将 Serverless 函数与外部客户端和传统系统集成,在路由、安全性、可观测性和身份验证方面带来了挑战。

这正是 API 网关 变得至关重要的地方。

在本文中,我们将探讨 Apache APISIXKongAWS API GatewayAPI 网关如何支持 Serverless 架构。我们将重点关注实际的落地实现,包括对 OpenWhiskAWS Lambda 的原生支持,并提供配置示例和架构图。

为什么在 Serverless 架构中使用 API 网关?

核心优势:

  • 统一入口点:标准化对 Serverless 函数的 HTTP 访问。
  • 安全层:添加身份验证、限流和 IP 过滤。
  • 路由与组合:实现函数的组合和 API 编排。
  • 日志与监控:与可观测性工具集成。
  • 版本控制与金丝雀发布:将流量路由到不同版本的函数。

API 网关中的 Serverless 集成

1. Apache APISIX + OpenWhisk(原生插件)

Apache APISIX 提供了一个内置的 openwhisk 插件,它直接与 OpenWhisk 的 REST API 集成,允许用户将 HTTP 请求路由到 OpenWhisk 函数。

🔧 插件配置示例

1{
2  "uri": "/invoke",
3  "plugins": {
4    "openwhisk": {
5      "service_token": "demo:abc123xyz456",
6      "host": "openwhisk.example.com",
7      "action": "demo/hello",
8      "api_path": "/api/v1",
9      "https": true
10    }
11  },
12  "upstream": {
13    "type": "roundrobin",
14    "nodes": {
15      "127.0.0.1:1980": 1
16    }
17  }
18}

此配置允许 APISIX 进行身份验证并调用托管在 OpenWhisk 平台上的 demo/hello 操作(Action)。

✅ 优势

  • 基于令牌(Token)的安全调用
  • 原生 REST 兼容性
  • 可与其他 APISIX 插件(身份验证、限流等)协同工作

2. Apache APISIX + AWS Lambda(原生插件)

Apache APISIX 还包含一个原生的 aws-lambda 插件,它简化了 AWS Lambda 函数的调用。

🔧 插件配置示例

1{
2  "uri": "/lambda",
3  "plugins": {
4    "aws-lambda": {
5      "function_uri": "arn:aws:lambda:us-east-1:123456789012:function:helloWorld",
6      "aws_region": "us-east-1",
7      "access_key": "YOUR_AWS_ACCESS_KEY",
8      "secret_key": "YOUR_AWS_SECRET_KEY",
9      "invocation_type": "RequestResponse"
10    }
11  },
12  "upstream": {
13    "type": "roundrobin",
14    "nodes": {
15      "lambda.us-east-1.amazonaws.com:443": 1
16    }
17  }
18}

🔒 确保保护你的访问密钥并定期轮换。

✅ 优势

  • 无需自行实现 SigV4 签名
  • 支持同步和异步调用
  • 与 APISIX 的插件生态系统完全集成

3. Kong Gateway + AWS Lambda

Kong 提供了一个 serverless 插件来直接调用 AWS Lambda 函数。它需要 AWS 凭据和函数名称。

Kong 插件配置(YAML):

1- plugins:
2    name: aws-lambda
3    config:
4      aws_key: YOUR_AWS_KEY
5      aws_secret: YOUR_AWS_SECRET
6      aws_region: us-east-1
7      function_name: helloWorld
8      invocation_type: RequestResponse

API 网关与 OpenWhisk

1sequenceDiagram
2    participant Client
3    participant APISIX
4    participant OpenWhisk
5    Client->>APISIX: HTTP Request /invoke
6    APISIX->>OpenWhisk: REST call with service_token
7    OpenWhisk-->>APISIX: JSON response
8    APISIX-->>Client: HTTP Response

API 网关与 AWS Lambda

1sequenceDiagram
2    participant Client
3    participant APISIX
4    participant AWS Lambda
5    Client->>APISIX: HTTP Request /lambda
6    APISIX->>AWS Lambda: Invoke Function (aws-lambda plugin)
7    AWS Lambda-->>APISIX: Response
8    APISIX-->>Client: HTTP 200 OK

真实应用场景

  • 物联网后端:设备将数据发送到 HTTP 端点,并被路由到 Lambda 或 OpenWhisk。
  • 机器学习推理网关:API 网关暴露运行机器学习模型的函数。
  • API 聚合层:将多个 Serverless 函数聚合为一个 HTTP 调用。
  • 事件转换:在将接收到的事件传递给云函数之前对其进行处理和转换。

最佳实践

  • 使用身份验证插件(例如 key-authjwt)来保护你的 Serverless 函数。
  • 启用限流以避免过多的调用成本。
  • 实施可观测性插件(例如 prometheusskywalking)进行监控。
  • 为了可维护性,优先使用原生插件(如 openwhiskaws-lambda),而不是自定义的代理设置。
  • 路由逻辑与业务逻辑分离,以获得更好的模块化。

总结

API 网关作为 Serverless 工作负载安全、可观测和高性能的入口点,在实现 Serverless 架构中发挥着至关重要的作用。Apache APISIX 提供了与 OpenWhisk 和 AWS Lambda 的原生集成,消除了自定义上游配置的需求。

无论你是在构建微服务、API 还是实时系统,将 API 网关与 Serverless 函数相结合都能提供可扩展性、高效性和快速迭代的能力。

对于生产环境部署,请始终在网关配置中包含安全性、限流和可观测性。

微信咨询

获取方案