

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Configure l'autorisation au niveau de l'événement, pour une API, un chemin et une méthode spécifiques.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-function-apifunctionauth-properties"></a>

 `ApiKeyRequired`   <a name="sam-function-apifunctionauth-apikeyrequired"></a>
Nécessite une clé API pour cette API, ce chemin d'accès et cette méthode.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `AuthorizationScopes`   <a name="sam-function-apifunctionauth-authorizationscopes"></a>
Les étendues d'autorisation à appliquer à cette API, ce chemin d'accès et cette méthode.  
Les étendues que vous spécifiez remplaceront toutes les étendues appliquées par la propriété `DefaultAuthorizer` si vous l'avez spécifiée.  
*Type* : liste  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Authorizer`   <a name="sam-function-apifunctionauth-authorizer"></a>
Le `Authorizer` pour une fonction spécifique.  
Si un mécanisme d'autorisation global est spécifié pour votre ressource `AWS::Serverless::Api`, vous pouvez remplacer le mécanisme d'autorisation en définissant `Authorizer` sur `NONE`. Pour obtenir un exemple, consultez [Remplacer un mécanisme d'autorisation global pour votre API REST Amazon API Gateway](#sam-property-function-apifunctionauth--examples--override).  
Si vous utilisez la propriété `DefinitionBody` d'une ressource `AWS::Serverless::Api` pour décrire votre API, vous devez utiliser `OverrideApiAuth` avec `Authorizer` pour remplacer votre mécanisme d'autorisation global. Pour plus d’informations, consultez `OverrideApiAuth`.
*Valeurs valides* : `AWS_IAM``NONE`, ou l'identifiant logique de tout autorisateur défini dans votre AWS SAM modèle.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `InvokeRole`   <a name="sam-function-apifunctionauth-invokerole"></a>
Spécifie le `InvokeRole` à utiliser pour l'autorisation `AWS_IAM`.  
*Type* : chaîne  
*Obligatoire* : non  
*Par défaut* : `CALLER_CREDENTIALS`  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.  
*Informations complémentaires* : `CALLER_CREDENTIALS` mappe avec `arn:aws:iam:::<user>/`, qui utilise les informations d'identification de l'appelant pour appeler le point de terminaison.

`OverrideApiAuth`  <a name="sam-function-apifunctionauth-overrideapiauth"></a>
Définissez-la sur `true` pour remplacer la configuration du mécanisme d'autorisation global de votre ressource `AWS::Serverless::Api`. Cette propriété n'est requise que si vous spécifiez un mécanisme d'autorisation global et que vous utilisez la propriété `DefinitionBody` d'une ressource `AWS::Serverless::Api` pour décrire votre API.  
Lorsque vous spécifiez `OverrideApiAuth` comme`true`, AWS SAM cela remplacera votre autorisateur global par toutes les valeurs fournies pour `ApiKeyRequired``Authorizer`, ou. `ResourcePolicy` C'est pourquoi au moins une de ces propriétés doit également être spécifiée lors de l'utilisation de `OverrideApiAuth`. Pour obtenir un exemple, consultez [Remplacer un autorisateur global lorsque DefinitionBody for est spécifié AWS::Serverless::Api](#sam-property-function-apifunctionauth--examples--override2).
*Type* : valeur booléenne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `ResourcePolicy`   <a name="sam-function-apifunctionauth-resourcepolicy"></a>
Configurez la stratégie de ressources pour ce chemin d'accès sur une API.  
*Type :* [ResourcePolicyStatement](sam-property-function-resourcepolicystatement.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

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

### Fonction-Auth (Autorisation fonction)
<a name="sam-property-function-apifunctionauth--examples--function-auth"></a>

L'exemple suivant spécifie l'autorisation au niveau de la fonction.

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

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

### Remplacer un mécanisme d'autorisation global pour votre API REST Amazon API Gateway
<a name="sam-property-function-apifunctionauth--examples--override"></a>

Vous pouvez spécifier un mécanisme d'autorisation global pour votre ressource `AWS::Serverless::Api`. Voici un exemple de configuration d'un mécanisme d'autorisation global par défaut :

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

Pour remplacer l'autorisateur par défaut pour votre AWS Lambda fonction, vous pouvez spécifier `Authorizer` comme. `NONE` Voici un exemple :

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

### Remplacer un autorisateur global lorsque DefinitionBody for est spécifié AWS::Serverless::Api
<a name="sam-property-function-apifunctionauth--examples--override2"></a>

Lorsque vous utilisez la propriété `DefinitionBody` pour décrire votre ressource `AWS::Serverless::Api`, la méthode de remplacement précédente ne fonctionne pas. Voici un exemple d'utilisation de la propriété `DefinitionBody` pour une ressource `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
```

Pour annuler le mécanisme d'autorisation global, utilisez la propriété `OverrideApiAuth`. Voici un exemple qui utilise `OverrideApiAuth` pour remplacer le mécanisme d'autorisation global par la valeur fournie pour `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
```