ApiFunctionAuth - AWS Serverless Application Model

ApiFunctionAuth

Configura la autorización a nivel de evento para una API, una ruta y un método específicos.

Sintaxis

Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis:

Propiedades

ApiKeyRequired

Requiere una clave de API para esta API, ruta y método.

Tipo: Booleano

Obligatorio: no

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

AuthorizationScopes

Los ámbitos de autorización que se aplicarán a esta API, ruta y método.

Los ámbitos que especifica anularán los ámbitos aplicados por la propiedad de DefaultAuthorizer si los ha especificado.

Tipo: lista

Obligatorio: no

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

Authorizer

Authorizer para una función específica.

Si ha especificado un autorizador global para su recurso AWS::Serverless::Api, puede anular el autorizador configurando Authorizer como NONE. Para ver un ejemplo, consulta Anule un autorizador global para su API de REST de Amazon API Gateway.

nota

Si utiliza la propiedad DefinitionBody de un recurso de AWS::Serverless::Api para describir su API, debe usar OverrideApiAuth con Authorizer para anular su autorizador global. Para obtener más información, consulta OverrideApiAuth.

Valores válidos: AWS_IAM, NONE o el ID lógico de cualquier autorizador definido en tu plantilla de AWS SAM.

Tipo: cadena

Obligatorio: no

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

InvokeRole

Especifica qué InvokeRole utilizar para la autorización de AWS_IAM.

Tipo: cadena

Obligatorio: no

Valor predeterminado: CALLER_CREDENTIALS

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

Notas adicionales: CALLER_CREDENTIALS asigna a arn:aws:iam:::<user>/, que utiliza las credenciales de la persona que llama para invocar el punto de conexión.

OverrideApiAuth

Especifica como true para anular la configuración del autorizador global de su recurso AWS::Serverless::Api. Esta propiedad solo es necesaria si usted especifica un autorizador global y utiliza la propiedad DefinitionBody de un recurso AWS::Serverless::Api para describir su API.

nota

Cuando especifique OverrideApiAuth como true, AWS SAM anulará su autorizador global con los valores proporcionados para ApiKeyRequired, Authorizer o ResourcePolicy. Por lo tanto, al utilizar OverrideApiAuth también se debe especificar al menos una de estas propiedades. Para ver un ejemplo, consulta Anule un autorizador global cuando se especifique DefinitionBody para AWS::Serverless::Api.

Tipo: Booleano

Obligatorio: no

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

ResourcePolicy

Configura la política de recursos para esta ruta en una API.

Tipo: ResourcePolicyStatement

Obligatorio: no

Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.

Ejemplos

Autenticación de funciones

El siguiente ejemplo especifica la autorización a nivel de función.

YAML

Auth: ApiKeyRequired: true Authorizer: NONE

Anule un autorizador global para su API de REST de Amazon API Gateway

Puedes especificar un autorizador global para su recurso AWS::Serverless::Api. A continuación se muestra un ejemplo que configura un autorizador predeterminado 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 anular el autorizador predeterminado de su función de AWS Lambda, puede especificar Authorizer como NONE. A continuación, se muestra un ejemplo:

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

Anule un autorizador global cuando se especifique DefinitionBody para AWS::Serverless::Api

Al utilizar la propiedad DefinitionBody para describir el recurso AWS::Serverless::Api, el método de anulación anterior no funciona. A continuación se muestra un ejemplo del uso de la propiedad DefinitionBody para un 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 anular el autorizador global, utilice la propiedad OverrideApiAuth. El siguiente es un ejemplo que utiliza OverrideApiAuth para anular el autorizador global con el valor proporcionado 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