

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

# Integrazione di Amazon CloudSearch con API Gateway
<a name="api-gateway"></a>

Questo capitolo fornisce informazioni sull'integrazione di Amazon CloudSearch con Amazon API Gateway. API Gateway consente di creare e ospitare REST APIs che effettuano chiamate ad altri servizi. Alcuni casi d'uso per l'utilizzo di API Gateway con Amazon CloudSearch includono:
+ Proteggere ulteriormente l'endpoint CloudSearch di ricerca Amazon utilizzando chiavi API o pool di utenti Amazon Cognito
+ Utilizzo CloudWatch per monitorare e registrare le chiamate di ricerca verso il CloudSearch dominio Amazon
+ Limitazione degli utenti a un sottoinsieme più limitato dell'API Amazon CloudSearch 
+ Applicare un limite al tasso relativo al numero di richieste

Per saperne di più sui vantaggi di API Gateway, consulta la [API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/).

**Topics**
+ [Prerequisiti](#api-gateway-pre)
+ [Creazione e configurazione di una API (Console)](#api-gateway-create)
+ [Test dell'API (Console)](#api-gateway-test)

## Prerequisiti
<a name="api-gateway-pre"></a>

Prima di integrare Amazon CloudSearch con API Gateway, devi disporre delle seguenti risorse.


****  

| Prerequisito  | Description | 
| --- | --- | 
|  CloudSearch Dominio Amazon | A scopo di test, il dominio deve avere alcuni dati ricercabili. I dati sui IMDb film sono un'opzione eccellente.<br />Il dominio deve avere le seguenti policy di accesso:<br />Questa policy configura il CloudSearch dominio Amazon in modo che solo API Gateway (e probabilmente il proprietario dell'account) possa accedervi. Per ulteriori informazioni, consulta [Creazione di un CloudSearch dominio Amazon](creating-domains.md) e [Configurazione dell'accesso per Amazon CloudSearch](configuring-access.md). | 
| Ruolo IAM | Questo ruolo delega le autorizzazioni ad API Gateway e gli consente di effettuare richieste ad Amazon. CloudSearch Il ruolo viene definito come `{{my-api-gateway-role}}` all'interno di questo capitolo e deve disporre delle autorizzazioni seguenti:  JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "logs:CreateLogGroup",
      "logs:CreateLogStream",
      "logs:DescribeLogGroups",
      "logs:DescribeLogStreams",
      "logs:PutLogEvents",
      "logs:GetLogEvents",
      "logs:FilterLogEvents"
    ],
    "Resource": "*"
  }]
}
```    <br />Il ruolo deve anche avere la relazione di trust seguente:  JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "",
    "Effect": "Allow",
    "Principal": {
      "Service": "apigateway.amazonaws.com"
    },
    "Action": "sts:AssumeRole"
  }]
}
```    <br />Per ulteriori informazioni, consulta [Creating Roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) nella *IAM User Guide*. | 

## Creazione e configurazione di una API (Console)
<a name="api-gateway-create"></a>

I passi necessari per la creazione di un'API variano a seconda se la richiesta impiega i parametri, richiede un corpo della richiesta, necessita di intestazioni specifiche e molti altri fattori. La procedura seguente crea un'API che ha una sola funzione: eseguire ricerche su un CloudSearch dominio Amazon. Per informazioni più complete sulla configurazione APIs, consulta [Creazione di un'API in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html).

**Come creare un'API (console)**

1. Accedere a e aprire Console di gestione AWS la console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegli **Crea API** (o scegli **Inizia** se è la prima volta che utilizzi API Gateway).

1. Scegli **Build** under **REST API** (non privato).

1. Fornisci un nome e una descrizione opzionale, quindi scegli **Crea API**.

1. Scegli **Azioni**, **Crea metodo**. Dal menu a discesa, scegliere **GET** e confermare.

1. Per **Integration type (Tipo di integrazione)**, scegliere **AWS Service (Servizio AWS )**.

1. Per **AWS Regione**, scegli la regione in cui risiede il tuo CloudSearch dominio Amazon.

1. Per **AWS Service (Servizio)**, scegliere **CloudSearch**.

1. Per **AWS Subdomain**, specifica il sottodominio per l'endpoint di ricerca del CloudSearch tuo dominio Amazon.

   Ad esempio, se l'endpoint di ricerca del dominio è `search-my-test-asdf5asdfasdfasdfasd5asdfg.us-west-1.cloudsearch.amazonaws.com`, specificare `search-my-test-asdf5ambgebbgmmodhhq5asdfg`.

1. Per **HTTP Method (Metodo HTTP)**, scegliere **GET**.

1. Per **Tipo di azione**, scegli **Use path override** e inserisci. `/2013-01-01/search`

1. Per **Execution role (Ruolo esecuzione)**, specificare l'ARN per `{{my-api-gateway-role}}`, ad esempio `arn:aws:iam::{{123456789012}}:role/{{my-api-gateway-role}}`.

1. In **Content Handling (Gestione contenuti)**, scegliere **Passthrough**, utilizzare il timeout predefinito, quindi scegliere **Save (Salva)**.

1. Selezionare **Method Request (Richiesta metodo)**.

1. Per **Request Validator (Validatore richiesta)**, scegliere **Convalidare i parametri e le intestazioni delle stringhe di query (Validate query string parameters and headers)**, quindi confermare.

1. Espandere **URL Query String Parameters (Parametri stringa di query URL)**. **Scegliete Aggiungi stringa di query**, assegnate un nome alla stringa `q` e confermate. Contrassegna la stringa di query come richiesta.

1. Scegliere **Method Execution (Esecuzione metodo)** per tornare al riepilogo dei metodi.

1. Scegliere **Integration Request (Richiesta integrazione)**.

1. Espandere **URL Query String Parameters (Parametri stringa di query URL)**. **Scegliete Aggiungi stringa di query**, assegnate un nome alla stringa`q`, fornite una mappatura di `method.request.querystring.q` e quindi confermate.

## Test dell'API (Console)
<a name="api-gateway-test"></a>

A questo punto, è stata creata un'API che dispone di un metodo. Prima di distribuire l'API, è opportuno provarla.

**Per eseguire il test dell'API (console)**

1. Vai alla pagina **Method Execution (Esecuzione metodo)**.

1. Scegli **Test (Esegui test)**.

1. In **Query Strings**, inserisci una stringa di query che corrisponda ad alcuni dati nel CloudSearch dominio Amazon. Se stai usando i dati del IMDb film, prova`q=thor`.

1. Scegli **Test (Esegui test)**.

1. Verificare che il corpo della risposta contenga i risultati della ricerca, come, ad esempio:

   ```
   {
     "status": {
       "rid": "rcWTo8IsviEK+own",
       "time-ms": 1
     },
     "hits": {
       "found": 7,
       "start": 0,
       "hit": [
         {
           "id": "tt0800369",
           "fields": {
             "rating": "7.0",
             "genres": [
               "Action",
               "Adventure",
               "Fantasy"
             ],
             "title": "Thor",
             "release_date": "2011-04-21T00:00:00Z",
             "plot": "The powerful but arrogant god Thor is cast out of Asgard to live amongst humans in Midgard (Earth), where he soon becomes one of their finest defenders.",
             "rank": "135",
             "running_time_secs": "6900",
             "directors": [
               "Kenneth Branagh",
               "Joss Whedon"
             ],
             "image_url": "http://ia.media-imdb.com/images/M/MV5BMTYxMjA5NDMzNV5BMl5BanBnXkFtZTcwOTk2Mjk3NA@@._V1_SX400_.jpg",
             "year": "2011",
             "actors": [
               "Chris Hemsworth",
               "Anthony Hopkins",
               "Natalie Portman"
             ]
           }
         },
         {{...}}
       ]
     }
   }
   ```

A questo punto, si dispone di un'API funzionale. Puoi aggiungere metodi per abilitare richieste di ricerca più solide, distribuire l'API e configurare la limitazione della velocità, creare e richiedere l'uso di chiavi API, aggiungere l'autenticazione del pool di utenti di Amazon Cognito e molto altro. Per ulteriori informazioni, consulta la [Guida per gli sviluppatori di API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/).