能否使用AWS SAM开发并部署Lambda授权器?其特殊性下是否仍适用?
AWS SAM 能否用于开发 Lambda 授权器?
当然可以用 AWS SAM 开发 Lambda 授权器——哪怕它的输入输出格式和通用 Lambda 函数不一样,SAM 早就针对这类场景做了适配支持。
核心配置方式
在 SAM 模板里,你可以通过以下步骤定义并关联 Lambda 授权器:
- 先用
AWS::Serverless::Function定义授权器对应的 Lambda 函数,和普通 Lambda 的配置逻辑一致,指定代码路径、运行时、权限等; - 在 API Gateway 的配置中,通过
Auth字段关联这个授权器,还能自定义身份来源(比如请求头、查询参数)、验证规则等。
简单示例模板
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: # 定义Lambda授权器函数 MyAuthFunction: Type: AWS::Serverless::Function Properties: CodeUri: auth/ Handler: app.lambdaHandler Runtime: nodejs20.x Policies: - AWSLambdaBasicExecutionRole # 关联授权器的API Gateway MyApi: Type: AWS::Serverless::Api Properties: StageName: prod Auth: DefaultAuthorizer: MyAuth Authorizers: MyAuth: FunctionArn: !GetAtt MyAuthFunction.Arn Identity: Header: Authorization ValidationExpression: ^Bearer [A-Za-z0-9-_.]+$
本地调试支持
和普通 Lambda 一样,你也能用 sam local invoke 测试授权器的逻辑。只需要提前构造一个符合授权器格式的事件 JSON(比如包含 type、methodArn、authorizationToken 字段),然后执行命令:
sam local invoke MyAuthFunction -e auth-event.json
总的来说,SAM 完全覆盖了 Lambda 授权器从开发、调试到部署的全流程,不用因为它是特殊 Lambda 就换工具。
内容的提问来源于stack exchange,提问作者Johnny Petro
相关产品推荐
相关产品推荐

