我需要将AWS API网关自定义授权程序添加到Lambda函数。目前,我已为每个端点添加了授权程序。如下面的serverless.yml
。
serverless.yml
service: test-service
provider:
name: aws
runtime: nodejs6.10
stage: dev
region: us-east-1
functions:
bff:
handler: app.handler
events:
- http:
path: /home
method: get
cors: true
authorizer :
arn: arn:aws:lambda:us-east-1:xxxxxx:function:token-verifier
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
identityValidationExpression: '.*'
如何将自定义授权程序添加到整个lambda函数中 而不是单独添加到每个端点?
答案 0 :(得分:5)
您混淆了AWS API Gateway和AWS Lambda之间的界限。这不是你的错。 无服务器框架非常好,它几乎模糊了这两件事。
严格来说,AWS Lambda函数不要需要自定义授权程序。
授权程序用于保护AWS Lambda函数的API网关端点 NOT 。
因此,您需要为需要授权的每个端点定义授权者。
如果您在多次重复授权程序定义后使serverless.yml
更加简洁,则可以定义一次并在端点中引用它。
service: test-service
custom:
authorizer:
arn: arn:aws:lambda:us-east-1:xxxxxx:function:token-verifier
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
identityValidationExpression: '.*'
provider:
name: aws
runtime: nodejs6.10
stage: dev
region: us-east-1
functions:
bff:
handler: app.handler
events:
- http:
path: /home
method: get
cors: true
authorizer: ${self:custom.authorizer}