

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à.

# Creazione e collegamento di una policy delle risorse API Gateway a un'API
<a name="apigateway-resource-policies-create-attach"></a>

Per consentire a un utente di accedere all'API chiamando il servizio di esecuzione dell'API, è necessario creare una policy delle risorse Gateway API e collegare la policy all'API. Il collegamento di una policy all'API comporta l'applicazione delle autorizzazioni della policy ai metodi dell'API. Se si aggiorna la policy delle risorse, è necessario implementare l'API.

**Topics**
+ [Prerequisiti](#apigateway-resource-policies-prerequisites)
+ [Collegamento di una policy delle risorse a un'API di Gateway API](#apigateway-resource-policies-create-attach-procedure)
+ [Risoluzione dei problemi relativi alla policy delle risorse](#apigateway-resource-policies-troubleshoot)

## Prerequisiti
<a name="apigateway-resource-policies-prerequisites"></a>

 Per aggiornare una policy delle risorse Gateway API, è necessario disporre delle autorizzazioni `apigateway:UpdateRestApiPolicy` e `apigateway:PATCH`.

Per un'API ottimizzata per l'edge o regionale, è possibile collegare la policy delle risorse all'API al momento della creazione o dopo che è stata implementata. Un'API privata non può essere implementata senza una policy delle risorse. Per ulteriori informazioni, consulta [REST privato APIs in API Gateway](apigateway-private-apis.md).

## Collegamento di una policy delle risorse a un'API di Gateway API
<a name="apigateway-resource-policies-create-attach-procedure"></a>

La procedura seguente mostra come collegare una policy delle risorse a un'API di Gateway API.

------
#### [ Console di gestione AWS ]

**Per collegare una policy delle risorse a un'API di API Gateway**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere una REST API.

1. Nel riquadro di navigazione principale, scegli **Policy delle risorse**.

1. Scegli **Crea policy**.

1. (Facoltativo) Scegli **Seleziona un modello** per generare una policy di esempio.

   Negli esempi di policy, i segnaposto sono racchiusi tra parentesi graffe doppie (`"{{{{placeholder}}}}"`). Sostituisci ogni segnaposto, incluse le parentesi graffe, con le informazioni necessarie.

1. Se non utilizzi uno dei modelli di esmepio, immetti la tua policy delle risorse.

1. Scegli **Save changes** (Salva modifiche).

Se l'API è stata distribuita in precedenza nella console API Gateway, sarà necessario ridistribuirla affinché la policy delle risorse diventi effettiva.

------
#### [ AWS CLI ]

Per utilizzare il AWS CLI per creare una nuova API e allegare ad essa una politica delle risorse, usa il seguente comando: [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)

```
aws apigateway create-rest-api \
    --name "{{api-name}}" \
    --policy "{\"{{jsonEscapedPolicyDocument}}\"}"
```

Per utilizzare AWS CLI per allegare una politica delle risorse a un'API esistente, utilizzare il [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)comando seguente: 

```
aws apigateway update-rest-api \
    --rest-api-id {{api-id}} \
    --patch-operations op=replace,path=/policy,value='"{\"{{jsonEscapedPolicyDocument}}\"}"'
```

È inoltre possibile allegare la politica delle risorse come `policy.json` file separato e includerla nel [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)comando. Il [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)comando seguente crea una nuova API con una politica delle risorse:

```
aws apigateway create-rest-api \
    --name "{{api-name}}" \
    --policy file://policy.json
```

Il file `policy.json` è una policy delle risorse Gateway API, come descritto in [Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

------
#### [ AWS CloudFormation ]

È possibile utilizzare CloudFormation per creare un'API con una politica delle risorse. L'esempio seguente crea una REST API con la policy delle risorse di esempio, come descritto in [Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example). 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: testapi
      Policy:
        Statement:
          - Action: 'execute-api:Invoke'
            Effect: Allow
            Principal: '*'
            Resource: 'execute-api:/*'
          - Action: 'execute-api:Invoke'
            Effect: Deny
            Principal: '*'
            Resource: 'execute-api:/*'
            Condition:
              IpAddress: 
                'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ]
        Version: 2012-10-17		 	 	 
  Resource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref Api
      ParentId: !GetAtt Api.RootResourceId
      PathPart: 'helloworld'
  MethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref Resource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        RequestTemplates:
          application/json: '{"statusCode": 200}'
        IntegrationResponses:
          - StatusCode: 200
            ResponseTemplates:
              application/json: '{}'
      MethodResponses:
        - StatusCode: 200
          ResponseModels:
            application/json: 'Empty'
  ApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    DependsOn:
      - MethodGet
    Properties:
      RestApiId: !Ref Api
      StageName: test
```

------

## Risoluzione dei problemi relativi alla policy delle risorse
<a name="apigateway-resource-policies-troubleshoot"></a>

La seguente guida può aiutare a risolvere i problemi relativi alla policy delle risorse.

### L'API restituisce {"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:\*\*\*\*\*\*\*\*/\*\*\*\*/\*\*\*\*/"}
<a name="apigateway-resource-policies-troubleshoot-auth"></a>

Nella politica delle risorse, se imposti il AWS Principal su un principale, ad esempio:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:role/developer",
                    "arn:aws:iam::111111111111:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

Devi utilizzare l'autorizzazione `AWS_IAM` per ogni metodo dell'API, altrimenti l'API restituirà il messaggio di errore precedente. Per ulteriori indicazioni su come attivare l'autorizzazione `AWS_IAM` per un metodo, consulta [Metodi per REST APIs in API Gateway](how-to-method-settings.md).

### La policy delle risorse non viene aggiornata
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 Se aggiorni la policy delle risorse dopo la creazione dell'API, dovrai distribuire l'API per propagare le modifiche dopo il collegamento della policy aggiornata. L'aggiornamento o il salvataggio della policy non modificherà il comportamento di runtime dell'API. Per ulteriori informazioni sulla distribuzione della tua API, vedi [Implementazione di REST API in Gateway API](how-to-deploy-api.md). 

### La policy delle risorse restituisce il seguente errore: Invalid policy document. Please check the policy syntax and ensure that Principals are valid.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Per correggere questo errore, è consigliabile innanzitutto controllare la sintassi della policy. Per ulteriori informazioni, consulta [Panoramica della sintassi delle policy di accesso per Amazon API Gateway](apigateway-control-access-policy-language-overview.md). Si suggerisce anche di verificare che tutti i principali specificati siano validi e non siano stati eliminati.

Inoltre, se l'API si trova in una [Regione con consenso esplicito](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), verificare che la Regione sia abilitata per tutti gli account della policy delle risorse. 