

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# ApiFunctionAuth
<a name="sam-property-function-apifunctionauth"></a>

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

## Sintaxis
<a name="sam-property-function-apifunctionauth-syntax"></a>

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### YAML
<a name="sam-property-function-apifunctionauth-syntax.yaml"></a>

```
  [ApiKeyRequired](#sam-function-apifunctionauth-apikeyrequired): {{Boolean}}
  [AuthorizationScopes](#sam-function-apifunctionauth-authorizationscopes): {{List}}
  [Authorizer](#sam-function-apifunctionauth-authorizer): {{String}}
  [InvokeRole](#sam-function-apifunctionauth-invokerole): {{String}}
  OverrideApiAuth: {{Boolean}}
  [ResourcePolicy](#sam-function-apifunctionauth-resourcepolicy): {{ResourcePolicyStatement}}
```

## Propiedades
<a name="sam-property-function-apifunctionauth-properties"></a>

 `ApiKeyRequired`   <a name="sam-function-apifunctionauth-apikeyrequired"></a>
Requiere una clave de API para esta API, ruta y método.  
*Tipo*: Booleano  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `AuthorizationScopes`   <a name="sam-function-apifunctionauth-authorizationscopes"></a>
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  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Authorizer`   <a name="sam-function-apifunctionauth-authorizer"></a>
`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](#sam-property-function-apifunctionauth--examples--override).  
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 identificador lógico de cualquier autorizador definido en la AWS SAM plantilla.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `InvokeRole`   <a name="sam-function-apifunctionauth-invokerole"></a>
Especifica qué `InvokeRole` utilizar para la autorización de `AWS_IAM`.  
*Tipo:* cadena  
*Obligatorio*: no  
*Valor predeterminado*: `CALLER_CREDENTIALS`  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.  
*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`  <a name="sam-function-apifunctionauth-overrideapiauth"></a>
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.  
Si especificas `OverrideApiAuth` como`true`, AWS SAM anulará tu 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 [Anula un autorizador global cuando se especifique for DefinitionBody AWS::Serverless::Api](#sam-property-function-apifunctionauth--examples--override2).
*Tipo*: Booleano  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `ResourcePolicy`   <a name="sam-function-apifunctionauth-resourcepolicy"></a>
Configura la política de recursos para esta ruta en una API.  
*Tipo:* [ResourcePolicyStatement](sam-property-function-resourcepolicystatement.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

## Ejemplos
<a name="sam-property-function-apifunctionauth--examples"></a>

### Autenticación de funciones
<a name="sam-property-function-apifunctionauth--examples--function-auth"></a>

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

#### YAML
<a name="sam-property-function-apifunctionauth--examples--function-auth--yaml"></a>

```
Auth:
  ApiKeyRequired: true
  Authorizer: NONE
```

### Anule un autorizador global para su API de REST de Amazon API Gateway
<a name="sam-property-function-apifunctionauth--examples--override"></a>

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 tu AWS Lambda función, puedes `Authorizer` especificarlo 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
```

### Anula un autorizador global cuando se especifique for DefinitionBody AWS::Serverless::Api
<a name="sam-property-function-apifunctionauth--examples--override2"></a>

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
```