Integrazione di Tabelle Amazon S3 con i servizi di analisi AWS - Amazon Simple Storage Service

Integrazione di Tabelle Amazon S3 con i servizi di analisi AWS

Questo argomento descrive i prerequisiti e le procedure necessarie per integrare i bucket di tabelle Amazon S3 con i servizi di analisi AWS. Per una panoramica di come funziona l’integrazione, consulta Panoramica dell’integrazione di Tabelle S3.

Nota

Questa integrazione utilizza i servizi AWS Lake Formation e AWS Glue e può comportare costi di richiesta e archiviazione di AWS Glue. Per ulteriori informazioni, consulta la sezione Prezzi di AWS Glue.

Vengono applicati costi aggiuntivi per l'esecuzione di query sulle tabelle S3. Per ulteriori informazioni, consulta le informazioni sui prezzi del motore di query in uso.

Prerequisiti per l'integrazione

Di seguito sono elencati i prerequisiti necessari per integrare bucket di tabelle con i servizi di analisi AWS.

Importante

Durante la creazione delle tabelle, è necessario utilizzare solo lettere minuscole nei nomi delle tabelle e nelle definizioni delle tabelle. Ad esempio, è necessario verificare che i nomi delle colonne siano tutti in minuscolo. Se il nome della tabella o la definizione della tabella contiene lettere maiuscole, la tabella non è supportata da AWS Lake Formation né dal AWS Glue Data Catalog. In questo caso, la tabella non sarà visibile ai servizi di analisi AWS come Amazon Athena, anche se i bucket di tabelle sono integrati con i servizi di analisi AWS.

Se la definizione della tabella contiene lettere maiuscole, viene visualizzato il seguente messaggio di errore durante l’esecuzione di una query SELECT in Athena: “GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.”

Integrazione di bucket di tabelle con i servizi di analisi AWS

Questa integrazione deve essere eseguita una volta per Regione AWS.

Importante

L’integrazione dei servizi di analisi AWS ora utilizza l’opzione WithPrivilegedAccess nell’operazione API Lake Formation registerResource per registrare i bucket di tabelle S3. L’integrazione ora crea anche il catalogo s3tablescatalog nel AWS Glue Data Catalog utilizzando l’opzione AllowFullTableExternalDataAccess nell’operazione API AWS Glue CreateCatalog.

Se si configura l’integrazione con la versione di anteprima, è possibile continuare a utilizzare l’integrazione attuale. Tuttavia, il processo di integrazione aggiornato offre miglioramenti delle prestazioni, quindi è consigliabile effettuare la migrazione. Per eseguire la migrazione all’integrazione aggiornata, consulta Migrazione al processo di integrazione aggiornato.

  1. Apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Bucket di tabelle.

  3. Seleziona Crea bucket di tabelle.

    Viene visualizzata la pagina Create bucket di tabelle.

  4. Inserisci un Nome del bucket di tabelle e assicurati che sia selezionata l’opzione Abilita integrazione.

  5. Seleziona Crea bucket di tabelle. Amazon S3 tenterà di integrare automaticamente i bucket di tabelle in tale Regione.

La prima volta che si integrano i bucket di tabelle in qualsiasi Regione, Amazon S3 crea un nuovo ruolo di servizio IAM per conto dell’utente. Questo ruolo consente a Lake Formation di accedere a tutti i bucket di tabelle dell'account dell'utente e di federare l'accesso alle tabelle in AWS Glue Data Catalog.

Per integrare i bucket di tabelle tramite AWS CLI

Di seguito sono riportate le fasi che mostrano come utilizzare AWS CLI per integrare i bucket di tabelle. Per utilizzare queste fasi, sostituisci user input placeholders con le informazioni appropriate.

  1. Creare un bucket di tabelle.

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. Creare un ruolo di servizio IAM che consente a Lake Formation di accedere alle risorse della propria tabella.

    1. Creare un file denominato Role-Trust-Policy.json contenente la seguente policy di attendibilità:

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

      Creare un ruolo di servizio IAM utilizzando il comando seguente:

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. Creare un file denominato LF-GluePolicy.json contenente la seguente policy:

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }

      Collegare la policy al ruolo utilizzando il comando seguente:

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. Creare un file denominato input.json contenente quanto segue:

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }

    Registrare i bucket di tabelle con Lake Formation utilizzando il comando seguente:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. Creare un file denominato catalog.json contenente il catalogo seguente:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }

    Creare il catalogo s3tablescatalog utilizzando il comando seguente. La creazione di questo catalogo consente di popolare il AWS Glue Data Catalog con oggetti corrispondenti ai bucket di tabelle, ai namespace e alle tabelle.

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  5. Verificare che il catalogo s3tablescatalog sia stato aggiunto ad AWS Glue utilizzando il comando seguente:

    aws glue get-catalog --catalog-id s3tablescatalog

Il processo di integrazione dei servizi di analisi AWS è stato aggiornato. Se l’integrazione è stata configurata con la versione di anteprima, è possibile continuare a utilizzare l’integrazione attuale. Tuttavia, il processo di integrazione aggiornato offre miglioramenti delle prestazioni, quindi è consigliabile effettuare la migrazione utilizzando le seguenti fasi. Per ulteriori informazioni sul processo di migrazione o integrazione, consulta Creazione di un catalogo Tabelle Amazon S3 nel AWS Glue Data Catalog nella Guida per gli sviluppatori di AWS Lake Formation.

  1. Aprire la console AWS Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/ e accedere come amministratore del data lake. Per ulteriori informazioni su come creare un amministratore del data lake, consulta Creare un amministratore di data lake nella Guida per gli sviluppatori di AWS Lake Formation.

  2. Elimina il catalogo s3tablescatalog come segue:

    • Nel riquadro di navigazione a sinistra, seleziona Cataloghi.

    • Seleziona il pulsante di opzione accanto al catalogo s3tablescatalog nell’elenco Cataloghi. Dal menu Actions (Operazioni), scegli Delete (Elimina).

  3. Annulla la registrazione della posizione dei dati per il catalogo s3tablescatalog come segue:

    • Nel riquadro di navigazione a sinistra, vai alla sezione Amministrazione e scegli Posizioni del data lake.

    • Seleziona il pulsante di opzione accanto alla posizione del data lake s3tablescatalog, ad esempio s3://tables:region:account-id:bucket/*.

    • Nel menu Operazioni scegli Rimuovi.

    • Nella finestra di dialogo di conferma che viene visualizzata, scegli Rimuovi.

  4. Una volta eliminato il catalogo s3tablescatalog e la posizione del data lake, è possibile seguire la procedura per integrare i bucket di tabelle con i servizi di analisi AWS utilizzando il processo di integrazione aggiornato.

Nota

Per utilizzare le tabelle crittografate SSE-KMS nei servizi di analisi AWS integrati, il ruolo in uso deve disporre dell’autorizzazione a utilizzare la chiave AWS KMS per le operazioni di crittografia. Per ulteriori informazioni, consulta Concessione delle autorizzazioni per l’utilizzo di tabelle crittografate in servizi di analisi AWS integrati ai principali IAM.

Dopo l’integrazione, il principale IAM dispone delle autorizzazioni Lake Formation per accedere alle tabelle. Per consentire ad altri principali IAM di accedere alle tabelle, è necessario fornire a tali principali le autorizzazioni Lake Formation per le tabelle. Per ulteriori informazioni, consulta Gestione dell’accesso a una tabella o a un database con Lake Formation.