

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Configura l'autorizzazione a livello di evento, per un'API, un percorso e un metodo specifici.

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

Per dichiarare questa entità nel tuo modello AWS Serverless Application Model (AWS SAM), usa la seguente sintassi.

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

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

 `ApiKeyRequired`   <a name="sam-function-apifunctionauth-apikeyrequired"></a>
Richiede una chiave API per questa API, percorso e metodo.  
*Tipo*: Booleano  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `AuthorizationScopes`   <a name="sam-function-apifunctionauth-authorizationscopes"></a>
Gli ambiti di autorizzazione da applicare a questa API, percorso e metodo.  
Gli ambiti specificati sostituiranno tutti gli ambiti applicati dalla `DefaultAuthorizer` proprietà, se l'hai specificata.  
Tipo: elenco  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un equivalente. CloudFormation 

 `Authorizer`   <a name="sam-function-apifunctionauth-authorizer"></a>
Il `Authorizer` per una funzione specifica.  
Se hai specificato un autorizzatore globale per la tua `AWS::Serverless::Api` risorsa, puoi sovrascrivere l'autorizzatore impostando su. `Authorizer` `NONE` Per vedere un esempio, consulta [Sostituisci un autorizzatore globale per la tua API REST di Amazon API Gateway](#sam-property-function-apifunctionauth--examples--override).  
Se utilizzi la `DefinitionBody` proprietà di una `AWS::Serverless::Api` risorsa per descrivere la tua API, devi usare `OverrideApiAuth` with `Authorizer` per sovrascrivere l'autorizzazione globale. Per ulteriori informazioni, consulta `OverrideApiAuth`.
*Valori validi*: `AWS_IAM``NONE`, o l'ID logico per qualsiasi autorizzatore definito nel modello. AWS SAM   
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `InvokeRole`   <a name="sam-function-apifunctionauth-invokerole"></a>
Specifica l'uso `InvokeRole` per l'`AWS_IAM`autorizzazione.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*Default*: `CALLER_CREDENTIALS`  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.  
*Note aggiuntive*: `CALLER_CREDENTIALS` maps to`arn:aws:iam:::<user>/`, che utilizza le credenziali del chiamante per richiamare l'endpoint.

`OverrideApiAuth`  <a name="sam-function-apifunctionauth-overrideapiauth"></a>
Specificate come `true` sovrascrivere la configurazione di autorizzazione globale della risorsa. `AWS::Serverless::Api` Questa proprietà è richiesta solo se si specifica un autorizzatore globale e si utilizza la `DefinitionBody` proprietà di una `AWS::Serverless::Api` risorsa per descrivere l'API.  
Quando specifichi `OverrideApiAuth` as`true`, AWS SAM sostituirà l'autorizzazione globale con tutti i valori forniti per`ApiKeyRequired`, `Authorizer` o. `ResourcePolicy` Pertanto, è necessario specificare almeno una di queste proprietà quando si utilizza. `OverrideApiAuth` Per vedere un esempio, consulta [Sostituisci un autorizzatore globale quando viene specificato for DefinitionBody AWS::Serverless::Api](#sam-property-function-apifunctionauth--examples--override2).
*Tipo*: Booleano  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `ResourcePolicy`   <a name="sam-function-apifunctionauth-resourcepolicy"></a>
Configura la politica delle risorse per questo percorso su un'API.  
*Tipo:* [ResourcePolicyStatement](sam-property-function-resourcepolicystatement.md)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

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

### Autenticazione della funzione
<a name="sam-property-function-apifunctionauth--examples--function-auth"></a>

L'esempio seguente specifica l'autorizzazione a livello di funzione.

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

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

### Sostituisci un autorizzatore globale per la tua API REST di Amazon API Gateway
<a name="sam-property-function-apifunctionauth--examples--override"></a>

Puoi specificare un autorizzatore globale per la tua risorsa. `AWS::Serverless::Api` Di seguito è riportato un esempio che configura un autorizzatore globale predefinito:

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

Per sovrascrivere l'autorizzatore predefinito per la tua AWS Lambda funzione, puoi specificare as. `Authorizer` `NONE` Di seguito è riportato un esempio:

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

### Sostituisci un autorizzatore globale quando viene specificato for DefinitionBody AWS::Serverless::Api
<a name="sam-property-function-apifunctionauth--examples--override2"></a>

Quando si utilizza la `DefinitionBody` proprietà per descrivere la `AWS::Serverless::Api` risorsa, il metodo override precedente non funziona. Di seguito è riportato un esempio di utilizzo della `DefinitionBody` proprietà per una `AWS::Serverless::Api` risorsa:

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

Per sovrascrivere l'autorizzatore globale, utilizzate la `OverrideApiAuth` proprietà. Di seguito è riportato un esempio che utilizza `OverrideApiAuth` per sostituire l'autorizzatore globale con il valore fornito per: `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
```