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:
YAML
ApiKeyRequired:BooleanAuthorizationScopes:ListAuthorizer:StringInvokeRole:StringOverrideApiAuth:BooleanResourcePolicy:ResourcePolicyStatement
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.
-
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
DefaultAuthorizersi los ha especificado.Tipo: lista
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Authorizerpara una función específica.Si ha especificado un autorizador global para su recurso
AWS::Serverless::Api, puede anular el autorizador configurandoAuthorizercomoNONE. Para ver un ejemplo, consulta Anule un autorizador global para su API de REST de Amazon API Gateway.nota
Si utiliza la propiedad
DefinitionBodyde un recurso deAWS::Serverless::Apipara describir su API, debe usarOverrideApiAuthconAuthorizerpara anular su autorizador global. Para obtener más información, consultaOverrideApiAuth.Valores válidos:
AWS_IAM,NONEo 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é
InvokeRoleutilizar para la autorización deAWS_IAM.Tipo: cadena
Obligatorio: no
Valor predeterminado:
CALLER_CREDENTIALSCompatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
Notas adicionales:
CALLER_CREDENTIALSasigna aarn:aws:iam::, que utiliza las credenciales de la persona que llama para invocar el punto de conexión.:<user>/ OverrideApiAuth-
Especifica como
truepara anular la configuración del autorizador global de su recursoAWS::Serverless::Api. Esta propiedad solo es necesaria si usted especifica un autorizador global y utiliza la propiedadDefinitionBodyde un recursoAWS::Serverless::Apipara describir su API.nota
Cuando especifique
OverrideApiAuthcomotrue, AWS SAM anulará su autorizador global con los valores proporcionados paraApiKeyRequired,AuthorizeroResourcePolicy. Por lo tanto, al utilizarOverrideApiAuthtambié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