

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

# Lake Formationflusso di lavoro per le operazioni API di integrazione delle applicazioni
<a name="api-overview"></a>

Di seguito è riportato il flusso di lavoro per le operazioni dell'API di integrazione delle applicazioni:

1. Un utente invia una query o una richiesta di dati utilizzando un motore di query integrato di terze parti. Il motore di query assume un ruolo IAM che rappresenta l'utente o un gruppo di utenti e recupera credenziali affidabili da utilizzare quando si chiamano le operazioni dell'API di integrazione delle applicazioni.

1.  Il motore di query chiama e`GetUnfilteredTableMetadata`, se si tratta di una tabella partizionata, chiama `GetUnfilteredPartitionsMetadata` per recuperare i metadati e le informazioni sulle policy dal Data Catalog.

1.  Lake Formation esegue l'autorizzazione per la richiesta. Se l'utente non dispone delle autorizzazioni appropriate sulla tabella, *AccessDeniedException*viene generato. 

1. Come parte della richiesta, il motore di query invia il filtro che supporta. *È possibile inviare due flag all'interno di un array: *COLUMN\$1PERMISSIONS* e CELL\$1FILTER\$1PERMISSION.* Se il motore di query non supporta nessuna di queste funzionalità e nella tabella esiste una policy per la funzionalità, viene generato un messaggio e la query ha esito negativo. *PermissionTypeMismatchException* Questo serve per evitare la perdita di dati.

1. La risposta restituita contiene quanto segue:
   + L'intero schema della tabella in modo che i motori di query possano utilizzarlo per analizzare i dati dall'archiviazione.
   + Un elenco di colonne autorizzate a cui l'utente ha accesso. Se l'elenco delle colonne autorizzate è vuoto, indica che l'utente dispone `DESCRIBE` delle autorizzazioni ma non `SELECT` delle ha e la query ha esito negativo.
   + Una bandiera`IsRegisteredWithLakeFormation`, che indica se Lake Formation può fornire credenziali ai dati di queste risorse. Se restituisce false, le credenziali dei clienti devono essere utilizzate per accedere ad Amazon S3. 
   +  Un elenco degli `CellFilters` eventuali elementi da applicare alle righe di dati. Questo elenco contiene colonne e un'espressione per valutare ogni riga. Questo campo deve essere compilato solo se *CELL\$1FILTER\$1PERMISSION* viene inviato come parte della richiesta ed è presente un filtro di dati sulla tabella per l'utente chiamante.

1. Dopo aver recuperato i metadati, il motore di query chiama `GetTemporaryGlueTableCredentials` o `GetTemporaryGluePartitionCredentials` per ottenere AWS le credenziali per recuperare i dati dalla posizione Amazon S3. 

1. Il motore di query legge gli oggetti pertinenti da Amazon S3, filtra i dati in base alle politiche ricevute nella fase 2 e restituisce i risultati all'utente. 

Le operazioni dell'API di integrazione delle applicazioni Lake Formation contengono contenuti aggiuntivi per la configurazione dell'integrazione con motori di query di terze parti. Puoi vedere i dettagli dell'operazione nella sezione Operazioni dell'[API di vendita delle credenziali](aws-lake-formation-api-credential-vending.md).

 `QuerySessionContext`È una struttura a cui i motori di query possono inoltre inviare messaggi Lake Formation per queste operazioni API di integrazione delle applicazioni. Consente di Lake Formation archiviare e utilizzare un contesto aggiuntivo per una determinata query. Di seguito viene fornito un esempio di come [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html)dovrebbe essere usato:

1. Il motore di query effettua una `GetInternalUnfilteredMetadata` chiamata, passando una struttura QSC contenente un ID di query univoco nella richiesta:

   ```
   {
       "QuerySessionContext": {
           "QueryId": "your-unique-identifier-here"
       }
   }
   ```

1. La `GetInternalUnfilteredMetadata` chiamata avrà restituito una `QueryAuthorizationId` stringa nella risposta. Alla successiva (e a qualsiasi successiva) chiamata di query che accetta una struttura QSC in input, il motore di query passa la stessa struttura QSC che ora contiene anche il valore `QueryAuthorizationId` restituito da. Lake Formation Supponiamo che la prossima chiamata sia`GetTemporaryGlueTableCredentials`; la richiesta conterrà:

   ```
   {
       "QuerySessionContext": {
           "QueryAuthorizationId": "lf-returned-query-authz-id-here",
           "QueryId": "your-unique-identifier-here"
       },
   }
   ```