ApiFunctionAuth - AWS Serverless Application Model

ApiFunctionAuth

Configura a autorização no nível do evento, para uma API, um caminho e um método específicos.

Sintaxe

Para declarar esta entidade no modelo do AWS Serverless Application Model (AWS SAM), use a seguinte sintaxe:

Propriedades

ApiKeyRequired

Requer uma chave de API para essa API, caminho e método.

Tipo: booliano

Obrigatório: não

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

AuthorizationScopes

Os escopos de autorização a serem aplicados a essa API, caminho e método.

Os escopos que você especificar substituirão quaisquer escopos aplicados pela propriedade DefaultAuthorizer, caso você a tenha especificado.

Tipo: Lista

Obrigatório: não

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

Authorizer

O Authorizer para uma função específica.

Se você tiver um autorizador global especificado para seu recurso AWS::Serverless::Api, poderá substituí-lo configurando como Authorizer NONE. Para ver um exemplo, consulte Substitua um autorizador global para sua API REST do Amazon API Gateway.

nota

Se você usar a propriedade DefinitionBody de um recurso AWS::Serverless::Api para descrever sua API, deverá usar o OverrideApiAuth com o Authorizer para substituir seu autorizador global. Consulte OverrideApiAuth para obter mais informações.

Valores válidos: AWS_IAM,NONE, ou a ID lógica de qualquer autorizador definido em seu modelo AWS SAM.

Tipo: string

Obrigatório: não

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

InvokeRole

Especifica o InvokeRole a ser usado para autorização AWS_IAM.

Tipo: string

Obrigatório: não

Padrão: CALLER_CREDENTIALS

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

Notas adicionais: CALLER_CREDENTIALS mapeia para arn:aws:iam::*:user/*, que usa as credenciais do chamador para invocar o endpoint.

OverrideApiAuth

Especifique como true para substituir a configuração global do autorizador do seu recurso AWS::Serverless::Api. Essa propriedade só é necessária se você especificar um autorizador global e usar a propriedade DefinitionBody de um recurso AWS::Serverless::Api para descrever sua API.

nota

Quando você especificar OverrideApiAuth como true, AWS SAM substituirá seu autorizador global por quaisquer valores fornecidos para ApiKeyRequired, Authorizer, ou ResourcePolicy. Portanto, pelo menos uma dessas propriedades também deve ser especificada durante o uso do OverrideApiAuth. Para ver um exemplo, consulte Substitua um autorizador global quando DefinitionBody for AWS::Serverless::Api for especificado.

Tipo: booliano

Obrigatório: não

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

ResourcePolicy

Configure a política de recursos para esse caminho em uma API.

Tipo:: ResourcePolicyStatement

Obrigatório: Não

Compatibilidade AWS CloudFormation: Essa propriedade é exclusiva do AWS SAM e não tem AWS CloudFormation equivalente.

Exemplos

Function-Auth

O exemplo a seguir especifica a autorização no nível da função.

YAML

Auth: ApiKeyRequired: true Authorizer: NONE

Substitua um autorizador global para sua API REST do Amazon API Gateway

Você pode especificar um autorizador global para seu recurso AWS::Serverless::Api. Este é um exemplo que configura um autorizador padrão global:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth

Para substituir o autorizador padrão da sua função AWS Lambda, você pode especificar Authorizer como NONE. Veja um exemplo a seguir.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: ... MyFn: Type: AWS::Serverless::Function Properties: ... Events: LambdaRequest: Type: Api Properties: RestApiId: !Ref MyApiWithLambdaRequestAuth Method: GET Auth: Authorizer: NONE

Substitua um autorizador global quando DefinitionBody for AWS::Serverless::Api for especificado

Ao usar a propriedade DefinitionBody para descrever seu recurso AWS::Serverless::Api, o método de substituição anterior não funciona. Veja a seguir um exemplo de uso da propriedade DefinitionBody para um recurso AWS::Serverless::Api:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... DefinitionBody: swagger: 2.0 ... paths: /lambda-request: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth

Para substituir o autorizador global, use a propriedade OverrideApiAuth. Veja a seguir um exemplo que usa o OverrideApiAuth para substituir o autorizador global pelo valor fornecido para Authorizer:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... DefinitionBody: swagger: 2-0 ... paths: /lambda-request: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth MyAuthFn: Type: AWS::Serverless::Function ... MyFn: Type: AWS::Serverless::Function Properties: ... Events: LambdaRequest: Type: Api Properties: RestApiId: !Ref MyApiWithLambdaRequestAuth Method: GET Auth: Authorizer: NONE OverrideApiAuth: true Path: /lambda-token