以 Lambda 項目的授權者範例 AWS SAM - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

以 Lambda 項目的授權者範例 AWS SAM

AWS::Serverless::Api源類型支援兩種類型的 Lambda 授權者:授權者和TOKENREQUEST授權者。資AWS::Serverless::HttpApi源類型僅支援REQUEST授權者。以下是每種類型的範例。

Lambda TOKEN 授權者範例 () AWS::Serverless::Api

您可以在 AWS SAM 範本中定義 Lambda TOKEN 授權者來控制對您的存取。APIs要做到這一點,你使用的ApiAuth數據類型。

以下是 Lambda TOKEN 授權者的 AWS SAM 範例範本區段:

注意

在下列範例中,會SAMFunctionRole隱含產生。

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閘道開發人員指南中的使用閘API道 Lambda 授權人員

Lambda REQUEST 授權者範例 () AWS::Serverless::Api

您可以在 AWS SAM 範本中定義 Lambda REQUEST 授權者來控制對您的存取。APIs要做到這一點,你使用的ApiAuth數據類型。

以下是 Lambda REQUEST 授權者的 AWS SAM 範例範本區段:

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閘道開發人員指南中的使用閘API道 Lambda 授權人員

Lambda 授權者範例 () AWS::Serverless::HttpApi

您可以在 AWS SAM 範本中定義 Lambda 授權者來控制對您的存取。HTTP APIs要做到這一點,你使用的HttpApiAuth數據類型。

以下是 Lambda 授權者的 AWS SAM 範例範本區段:

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