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

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

Lambda 授权方示例

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

Lambda TOKEN 授权方示例 (AWS::Serverless::Api)

您可以通过在 APIs 模板中定义 Lambda TOKEN 授权方来控制对 AWS SAM 的访问。为此,您可以使用 ApiAuth 数据类型。

以下是 AWS SAM Lambda 授权方的示例 TOKEN 模板部分:

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 网关使用 Lambda 授权方。API 网关 开发人员指南

Lambda REQUEST 授权方示例 (AWS::Serverless::Api)

您可以通过在 APIs 模板中定义 Lambda REQUEST 授权方来控制对 AWS SAM 的访问。为此,您可以使用 ApiAuth 数据类型。

以下是 AWS SAM Lambda 授权方的示例 REQUEST 模板部分:

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 网关使用 Lambda 授权方。API 网关 开发人员指南

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

您可以通过在 APIs 模板中定义 Lambda 授权方来控制对 HTTP AWS SAM 的访问。为此,您可以使用 HttpApiAuth 数据类型。

下面是 AWS 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