AWS Serverless:如何避免为每个函数单独配置自定义授权器?
方法一:设置全局默认授权器
在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
相关产品推荐
相关产品推荐

