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

AWS Serverless:如何避免为每个函数单独配置自定义授权器?

解决Serverless HTTP API重复配置Custom Authorizer的方法

方法一:设置全局默认授权器

在provider.httpApi下添加defaultAuthorizer配置,指定已定义的自定义授权器名称,所有未单独配置授权器的HTTP API都会自动套用这个全局默认配置,彻底消除重复代码。

修改后的完整serverless.yml示例:

service: iot-server-2
frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs18.x
  httpApi:
    authorizers:
      customAuthorizer:
        type: request
        functionName: authorizerFunc
    defaultAuthorizer: customAuthorizer # 配置全局默认授权器

functions:
  api:
    handler: index.handler
    events:
      - httpApi:
          path: /
          method: get
  getDevice:
      handler: sensor-save-data-handler.handler
      events:
        - httpApi:
            path: /sensors
            method: get
  authorizerFunc:
    handler: authorizer.handler

如果某个API不需要授权,可单独配置authorizer: none覆盖全局默认:

events:
  - httpApi:
      path: /public
      method: get
      authorizer: none

方法二:使用YAML锚点减少重复代码

若不想设置全局默认(仅部分API需要授权),可以用YAML锚点特性定义一次授权器配置,再在需要的地方引用,避免重复编写完整配置块。

示例:

service: iot-server-2
frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs18.x
  httpApi:
    authorizers:
      customAuthorizer:
        type: request
        functionName: authorizerFunc

# 定义授权器配置锚点
customAuthConfig: &customAuth
  authorizer:
    name: customAuthorizer

functions:
  api:
    handler: index.handler
    events:
      - httpApi:
          path: /
          method: get
          <<: *customAuth # 引用锚点
  getDevice:
      handler: sensor-save-data-handler.handler
      events:
        - httpApi:
            path: /sensors
            method: get
            <<: *customAuth # 引用锚点
  authorizerFunc:
    handler: authorizer.handler

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:15:18