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:
YAML
ApiKeyRequired:
Boolean
AuthorizationScopes:List
Authorizer:String
InvokeRole:String
OverrideApiAuth:Boolean
ResourcePolicy:ResourcePolicyStatement
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.
-
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.
-
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 comoAuthorizer
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 recursoAWS::Serverless::Api
para descrever sua API, deverá usar oOverrideApiAuth
com oAuthorizer
para substituir seu autorizador global. ConsulteOverrideApiAuth
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çãoAWS_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 paraarn: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 recursoAWS::Serverless::Api
. Essa propriedade só é necessária se você especificar um autorizador global e usar a propriedadeDefinitionBody
de um recursoAWS::Serverless::Api
para descrever sua API.nota
Quando você especificar
OverrideApiAuth
comotrue
, AWS SAM substituirá seu autorizador global por quaisquer valores fornecidos paraApiKeyRequired
,Authorizer
, ouResourcePolicy
. Portanto, pelo menos uma dessas propriedades também deve ser especificada durante o uso doOverrideApiAuth
. 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