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

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 delle tabelle AWS Amazon S3 con i servizi di analisi

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

Nota

Questa integrazione utilizza i AWS Lake Formation servizi AWS Glue and e potrebbe comportare costi di AWS Glue richiesta e archiviazione. Per ulteriori informazioni, consultare AWS Glue Prezzi.

Vengono applicati costi aggiuntivi per l'esecuzione di query sulle tabelle S3. Per ulteriori informazioni, consulta le informazioni sui prezzi per il motore di query che stai utilizzando.

Prerequisiti per l'integrazione

Per integrare i table bucket con i servizi di AWS analisi sono necessari i seguenti prerequisiti:

Importante

Quando create tabelle, assicuratevi di utilizzare tutte le lettere minuscole nei nomi delle tabelle e nelle definizioni delle tabelle. Ad esempio, assicuratevi che i nomi delle colonne siano tutti in minuscolo. Se il nome o la definizione della tabella contengono lettere maiuscole, la tabella non è supportata da AWS Lake Formation o da. AWS Glue Data Catalog In questo caso, la tua tabella non sarà visibile ai servizi di AWS analisi come Amazon Athena, anche se i tuoi table bucket sono integrati con AWS servizi di analisi.

Se la definizione della tabella contiene lettere maiuscole, ricevi il seguente messaggio di errore quando esegui una SELECT query in Athena: «GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Risorsa federativa non supportata: nomi di tabelle o colonne non validi».

Integrazione dei 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 AWS analisi ora utilizza l'WithPrivilegedAccessopzione nell'operazione dell'API registerResource Lake Formation per registrare i bucket di tabelle S3. L'integrazione ora crea anche il s3tablescatalog catalogo AWS Glue Data Catalog utilizzando l'AllowFullTableExternalDataAccessopzione nell'operazione CreateCatalog AWS Glue API.

Se configuri l'integrazione con la versione di anteprima, puoi continuare a utilizzare l'integrazione attuale. Tuttavia, il processo di integrazione aggiornato offre miglioramenti delle prestazioni, quindi consigliamo di effettuare la migrazione. Per migrare 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 il nome di un bucket Table e assicurati che la casella di controllo Abilita integrazione sia selezionata.

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

La prima volta che integri i table bucket in qualsiasi regione, Amazon S3 crea un nuovo ruolo di servizio IAM per tuo conto. 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 secchielli da tavolo utilizzando il AWS CLI

I passaggi seguenti mostrano come utilizzare i bucket AWS CLI da tavolo per integrare. Per utilizzare questi passaggi, sostituiscili user input placeholders con le tue informazioni.

  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. Create un file chiamato Role-Trust-Policy.json che contenga la seguente politica di attendibilità:

      JSON

      Crea il ruolo di servizio IAM utilizzando il seguente comando:

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. Crea un file chiamato LF-GluePolicy.json che contiene la seguente politica:

      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/*" ] } ] }

      Associa la policy al ruolo utilizzando il seguente comando:

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. Create un file chiamato input.json che contenga quanto segue:

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

    Registra i bucket da tavola con Lake Formation utilizzando il seguente comando:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. Crea un file chiamato catalog.json che contiene il seguente catalogo:

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

    Create il s3tablescatalog catalogo utilizzando il seguente comando. La creazione di questo catalogo lo popola AWS Glue Data Catalog con gli oggetti corrispondenti ai bucket di tabella, ai namespace e alle tabelle.

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

    aws glue get-catalog --catalog-id s3tablescatalog

Il processo di integrazione dei servizi di AWS analisi è stato aggiornato. Se hai configurato l'integrazione con la versione di anteprima, puoi continuare a utilizzare l'integrazione attuale. Tuttavia, il processo di integrazione aggiornato offre miglioramenti delle prestazioni, quindi consigliamo di effettuare la migrazione utilizzando i passaggi seguenti. Per ulteriori informazioni sul processo di migrazione o integrazione, consulta la sezione Creazione di un catalogo Amazon S3 Tables AWS Glue Data Catalog nella AWS Lake Formation Developer Guide.

  1. Apri la AWS Lake Formation console all'indirizzo https://console.aws.amazon.com/lakeformation/ e accedi come amministratore del data lake. Per ulteriori informazioni su come creare un amministratore di data lake, consulta Create a data lake administrator nella AWS Lake Formation Developer Guide.

  2. Elimina il s3tablescatalog catalogo effettuando le seguenti operazioni:

    • Nel riquadro di navigazione a sinistra, scegli Cataloghi.

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

  3. Annulla la registrazione della posizione dei dati per il s3tablescatalog catalogo effettuando le seguenti operazioni:

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

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

    • Nel menu Azioni, scegli Rimuovi.

    • Nella finestra di dialogo di conferma che appare, scegli Rimuovi.

  4. Ora che hai eliminato il s3tablescatalog catalogo e la posizione del data lake, puoi seguire i passaggi per integrare i tuoi table bucket con i servizi di AWS analisi utilizzando il processo di integrazione aggiornato.

Nota

Se desideri utilizzare tabelle crittografate SSE-KMS in servizi di AWS analisi integrati, il ruolo che utilizzi deve disporre dell'autorizzazione a utilizzare la tua AWS KMS chiave per le operazioni di crittografia. Per ulteriori informazioni, consulta Concessione ai dirigenti IAM delle autorizzazioni per l'utilizzo di tabelle crittografate nei servizi di analisi integrati AWS.

Dopo l'integrazione, al tuo principale IAM vengono concesse le autorizzazioni Lake Formation per accedere alle tue tabelle, se desideri consentire ad altri principali IAM di accedere alle tabelle, devi concedere le autorizzazioni di Lake Formation sulle tue tabelle a tali principali. Per ulteriori informazioni, consulta Gestione dell'accesso a una tabella o a un database con Lake Formation.