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

在EKS使用ALB Ingress Controller修改Listener时,为何不支持Lambda目标组?

可行解决方案

方案1:通过自定义动作注解配置默认转发到Lambda目标组

ALB Ingress Controller支持通过自定义动作注解指定转发到Lambda目标组,之前的错误提示大概率是注解格式不正确。按以下步骤配置:

  1. 在Ingress资源中添加自定义动作注解,填入你的Lambda目标组ARN:
annotations:
  alb.ingress.kubernetes.io/actions.lambda-auth: |
    {
      "Type": "forward",
      "ForwardConfig": {
        "TargetGroups": [
          {
            "TargetGroupArn": "arn:aws:elasticloadbalancing:你的区域:你的账号ID:targetgroup/你的Lambda目标组名/目标组ID",
            "Weight": 100
          }
        ]
      }
    }
  1. 设置ALB的默认动作指向这个自定义动作:
annotations:
  # 保留上述自定义动作注解
  alb.ingress.kubernetes.io/default-action: lambda-auth
  1. 应用Ingress配置后,控制器会自动同步ALB的Listener规则,将未匹配Ingress路径的流量转发到Lambda目标组完成Basic Auth验证。

注意:确保ALB Ingress Controller版本在v2.4.0以上,旧版本可能不支持转发到Lambda类型的目标组。

方案2:临时禁用控制器同步(适合短期临时场景)

如果只是短期需要Basic Auth,不想修改Ingress配置,可以给目标Ingress添加skip-sync注解,阻止控制器覆盖手动在控制台配置的规则:

annotations:
  alb.ingress.kubernetes.io/skip-sync: "true"

应用后,控制器会停止同步该Ingress对应的ALB配置,你可以安全地在AWS控制台修改Listener规则,将未路由流量指向Lambda目标组。但需注意:

  • 后续若要修改Ingress资源,需先移除该注解,否则控制器不会同步Ingress的变更。
  • 此方案仅适合短期临时使用,长期依赖可能导致Ingress配置与实际ALB状态不一致。

方案3:用Lambda@Edge处理Basic Auth(无需修改ALB规则)

如果架构允许,可在ALB前端添加CloudFront,通过Lambda@Edge在请求到达ALB前完成Basic Auth验证:

  • 创建实现Basic Auth逻辑的Lambda函数,部署到Lambda@Edge(需选择us-east-1区域部署)。
  • 在CloudFront的行为中配置该Lambda函数作为「Viewer Request」触发器。
  • 将CloudFront的源指向你的ALB。

这种方式无需修改ALB的Listener规则,也不会被Ingress控制器覆盖,但需要额外配置CloudFront,适合需要长期保留认证逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:25