Lambda 授权方示例 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda 授权方示例

这些区域有:AWS::Serverless::Api资源类型支持两种 Lambda 授权方:TOKEN授权方和REQUEST授权方。这些区域有:AWS::Serverless::HttpApi资源类型仅支持REQUEST授权方。以下是每种类型的示例。

LambdaTOKEN授权方示例 (AWS::Serverless::Api)

您可以通过定义 Lambda 来控制对 API 的访问TOKEN授权程序Amazon SAMTemplate。为此,您可以使用ApiAuth数据类型。

以下是示例Amazon SAM模板部分用于 LambdaTOKEN授权方:

Resources: MyApi: Type: AWS::Serverless::Api Properties: StageName: Prod Auth: DefaultAuthorizer: MyLambdaTokenAuthorizer Authorizers: MyLambdaTokenAuthorizer: FunctionArn: !GetAtt MyAuthFunction.Arn MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: index.handler Runtime: nodejs12.x Events: GetRoot: Type: Api Properties: RestApiId: !Ref MyApi Path: / Method: get MyAuthFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: authorizer.handler Runtime: nodejs12.x

有关 Lambda 授权方的更多信息,请参阅。使用 API Gateway Lambda 授权方中的API Gateway 开发人员指南.

LambdaREQUEST授权方示例 (AWS::Serverless::Api)

您可以通过定义 Lambda 来控制对 API 的访问REQUEST授权程序Amazon SAMTemplate。为此,您可以使用ApiAuth数据类型。

以下是示例Amazon SAM模板部分用于 LambdaREQUEST授权方:

Resources: MyApi: Type: AWS::Serverless::Api Properties: StageName: Prod Auth: DefaultAuthorizer: MyLambdaRequestAuthorizer Authorizers: MyLambdaRequestAuthorizer: FunctionPayloadType: REQUEST FunctionArn: !GetAtt MyAuthFunction.Arn Identity: QueryStrings: - auth MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: index.handler Runtime: nodejs12.x Events: GetRoot: Type: Api Properties: RestApiId: !Ref MyApi Path: / Method: get MyAuthFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: authorizer.handler Runtime: nodejs12.x

有关 Lambda 授权方的更多信息,请参阅。使用 API Gateway Lambda 授权方中的API Gateway 开发人员指南.

Lambda 授权方示例 (AWS::Serverless::HttpApi)

您可以 Lambda 过在Amazon SAMTemplate。为此,您可以使用HttpApiAuth数据类型。

以下是示例Amazon SAM模板部分,用于 Lambda 授权程序:

Resources: MyApi: Type: AWS::Serverless::HttpApi Properties: StageName: Prod Auth: DefaultAuthorizer: MyLambdaRequestAuthorizer Authorizers: MyLambdaRequestAuthorizer: FunctionArn: !GetAtt MyAuthFunction.Arn FunctionInvokeRole: !GetAtt MyAuthFunctionRole.Arn Identity: Headers: - Authorization AuthorizerPayloadFormatVersion: 2.0 EnableSimpleResponses: true MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: index.handler Runtime: nodejs12.x Events: GetRoot: Type: HttpApi Properties: ApiId: !Ref MyApi Path: / Method: get PayloadFormatVersion: "2.0" MyAuthFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: authorizer.handler Runtime: nodejs12.x