You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Kong AWS Lambda插件后访问/lambda路径报无匹配路由错误

问题原因及解决方法

核心问题

你混淆了Ingress控制器的作用:当前集群用的是AWS ALB Ingress Controller(负责管理阿里云负载均衡),而非Kong Ingress Controller。这导致:

  1. 新增的/lambda Ingress仅配置了ALB的转发规则,但不会在Kong网关内部生成对应的路由(Route),Kong无法识别/lambda路径,因此抛出no Route matched错误。
  2. 绑定在ALB Ingress上的konghq.com/plugins注解无效——Kong的插件必须绑定到自身的Route、Service或Consumer资源,而非ALB的Ingress。

解决步骤

1. 创建占位Service

Kong Route必须关联一个Kubernetes Service,即使Lambda插件不需要真实后端,也需要一个占位服务:

apiVersion: v1
kind: Service
metadata:
  name: lambda-dummy-service
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: lambda-dummy # 无需对应真实Pod

2. 配置Kong路由并绑定插件

通过KongRoute CRD在Kong内部创建/lambda路径的路由,并将Lambda插件绑定到该路由:

apiVersion: configuration.konghq.com/v1
kind: KongRoute
metadata:
  name: lambda-route
  annotations:
    konghq.com/plugins: aws-lambda-example # 绑定已创建的Lambda插件
route:
  hosts:
    - xxxxx # 替换为你的域名
  paths:
    - /lambda
  service:
    name: lambda-dummy-service
    port: 80

或者直接修改原有KongPlugin,通过targetRef绑定到路由:

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: aws-lambda-example
  targetRef:
    kind: KongRoute
    name: lambda-route
    namespace: default # 替换为你的命名空间
plugin: aws-lambda
config:
  aws_key: xxx
  aws_secret: xxxx
  aws_region: xxxx
  function_name: test-lambda
  forward_request_body: true
  forward_request_headers: true
  forward_request_uri: true

3. 调整ALB Ingress规则优先级

合并两个Ingress为一个,确保更具体的/lambda路径优先匹配,避免被/*规则拦截:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kong-gateway-ingress
  annotations:
    alb.ingress.kubernetes.io/conditions.rule-lambda: |
      [{"field":"path-pattern","pathPatternConfig":{"values":["/lambda"]}}]
    alb.ingress.kubernetes.io/conditions.rule-default: |
      [{"field":"path-pattern","pathPatternConfig":{"values":["/*"]}}]
spec:
  rules:
    - host: xxxxx # 替换为你的域名
      http:
        paths:
          - path: /lambda
            pathType: ImplementationSpecific
            backend:
              service:
                name: kong-gw-ingress-gateway-proxy
                port:
                  number: 443
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: kong-gw-ingress-gateway-proxy
                port:
                  number: 443

验证配置

  1. 检查KongRoute状态:
kubectl get kongroutes
  1. 访问mydomain/lambda测试是否正常转发到Lambda函数。

内容的提问来源于stack exchange,提问作者Linh Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:05:27