Accesso alle tabelle Amazon S3 tramite AWS Glue Iceberg REST endpoint - 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à.

Accesso alle tabelle Amazon S3 tramite AWS Glue Iceberg REST endpoint

Una volta integrati i bucket da tavolo S3 con AWS Glue Data Catalog AWS Glue Iceberg REST endpoint da cui connettersi ai tavoli S3 Apache Iceberg-client compatibili, come PyIceberg oppure Spark. La AWS Glue Iceberg REST endpoint implementa il Iceberg REST Specificazione Catalog Open API che fornisce un'interfaccia standardizzata per interagire con Iceberg tabelle. Per accedere alle tabelle S3 utilizzando l'endpoint è necessario configurare le autorizzazioni tramite una combinazione di policy e concessioni IAM. AWS Lake Formation Le sezioni seguenti spiegano come configurare l'accesso, inclusa la creazione del ruolo IAM necessario, la definizione delle politiche richieste e la definizione delle autorizzazioni di Lake Formation per l'accesso sia a livello di database che a livello di tabella.

Per una procedura dettagliata completa utilizzando PyIceberg, vedi Accedere ai dati in Amazon S3 Tables usando PyIceberg attraverso il AWS Glue Iceberg REST punto finale.

Crea un ruolo IAM per il tuo cliente

Per accedere alle tabelle tramite gli AWS Glue endpoint, devi creare un ruolo IAM con autorizzazioni AWS Glue e azioni Lake Formation. Questa procedura spiega come creare questo ruolo e configurarne le autorizzazioni.

  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione sinistro, scegli Policy.

  3. Scegli Crea una policy e scegliere JSON nell'editor delle policy.

  4. Aggiungi la seguente politica in linea che concede le autorizzazioni all'accesso e alle azioni di Lake AWS Glue Formation:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3_table_bucket_name>", "arn:aws:glue:<region>:<account-id>:table/s3tablescatalog/<s3_table_bucket_name>/<namespace>/*", "arn:aws:glue:<region>:<account-id>:database/s3tablescatalog/<s3_table_bucket_name>/<namespace>" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  5. Dopo aver creato la policy, crea un ruolo IAM e scegli Custom Trust Policy come tipo di entità affidabile.

  6. Inserisci quanto segue per la politica di fiducia personalizzata.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/<Admin_role>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Definisci l'accesso in Lake Formation

Lake Formation offre un controllo granulare degli accessi per le tabelle dei data lake. Quando hai integrato il tuo bucket S3 con AWS Glue Data Catalog, le tue tabelle venivano automaticamente registrate come risorse in Lake Formation. Per accedere a queste tabelle, devi concedere autorizzazioni specifiche di Lake Formation alla tua identità IAM, oltre alle autorizzazioni relative alle relative policy IAM.

I passaggi seguenti spiegano come applicare i controlli di accesso di Lake Formation per consentire: Iceberg client per connetterti ai tuoi tavoli. È necessario accedere come amministratore del data lake per applicare queste autorizzazioni.

Consenti ai motori esterni di accedere ai dati delle tabelle

In Lake Formation, è necessario abilitare l'accesso completo alla tabella per consentire ai motori esterni di accedere ai dati. Ciò consente alle applicazioni di terze parti di ottenere credenziali temporanee da Lake Formation quando utilizzano un ruolo IAM con autorizzazioni complete sulla tabella richiesta.

Apri la console Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/.

  1. Apri la console Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/e accedi come amministratore del data lake.

  2. Nel riquadro di navigazione in Amministrazione, scegli Impostazioni di integrazione delle applicazioni.

  3. Seleziona Consenti ai motori esterni di accedere ai dati nelle posizioni Amazon S3 con accesso completo alla tabella. Quindi scegli Save (Salva).

Concedere le autorizzazioni di Lake Formation sulle risorse delle tabelle

Successivamente, concedi le autorizzazioni a Lake Formation per il ruolo IAM che hai creato per il tuo client compatibile con Iceberg. Queste autorizzazioni consentiranno al ruolo di creare e gestire tabelle nel tuo namespace. È necessario fornire sia le autorizzazioni a livello di database che a livello di tabella:

Per concedere le autorizzazioni al database

  1. Apri la AWS Lake Formation console all'indirizzo https://console.aws.amazon.com/lakeformation/e accedi come amministratore del data lake.

  2. Nel riquadro di navigazione scegli Autorizzazioni dati, quindi seleziona Concedi.

  3. Nella pagina Concedi autorizzazioni, in Principali, scegli utenti e ruoli IAM e seleziona il ruolo IAM che hai creato per Iceberg AWS Glue  REST endpoint accesso.

  4. In LF-Tags o risorse del catalogo, scegli Risorse Catalogo dati denominato.

  5. Per Catalogs, scegli il catalogo di AWS Glue dati che è stato creato per il tuo table bucket. Ad esempio, <accoundID>:s3tablescatalog/<table-bucket-name>.

  6. Per Database, scegli. mynamespace

  7. Per le autorizzazioni relative alle tabelle, scegli Crea tabella e Descrivi.

  8. Scegli Concessione.

Per concedere le autorizzazioni relative alle tabelle

  1. Apri la AWS Lake Formation console all'indirizzo https://console.aws.amazon.com/lakeformation/ e accedi come amministratore del data lake.

  2. Nel riquadro di navigazione scegli Autorizzazioni dati, quindi seleziona Concedi.

  3. Nella pagina Concedi autorizzazioni, in Principali, scegli utenti e ruoli IAM e seleziona il ruolo IAM che hai creato per Iceberg AWS Glue REST endpoint accesso.

  4. In LF-Tags o risorse del catalogo, scegli Risorse Catalogo dati denominato.

  5. Per Catalogs, scegli il catalogo di AWS Glue dati che è stato creato per il tuo table bucket. Ad esempio, <accoundID>:s3tablescatalog/<table-bucket-name>.

  6. Per Database, scegli lo spazio dei nomi del bucket di tabelle S3 che è stato creato.

  7. Per Tabelle, scegli ALL_TABLES.

  8. Per Autorizzazioni per tabelle, scegli Super.

  9. Scegli Concessione.

Configura il tuo ambiente per utilizzare l'endpoint

Dopo aver configurato il ruolo IAM con le autorizzazioni necessarie per l'accesso alla tabella, puoi utilizzarlo per l'esecuzione Iceberg client dal tuo computer locale configurandoli AWS CLI con il tuo ruolo, utilizzando il seguente comando:

aws sts assume-role --role-arn "arn:aws:iam::<accountid>:role/<glue-irc-role>" --role-session-name <glue-irc-role>

Per accedere alle tabelle tramite AWS Glue REST endpoint, devi inizializzare un catalogo nel tuo Iceberg-client compatibile. Questa inizializzazione richiede la specificazione di proprietà personalizzate, incluse le proprietà sigv4, l'URI dell'endpoint e la posizione del magazzino. Specificate queste proprietà come segue:

  • Proprietà Sigv4: Sigv4 deve essere abilitato, il nome della firma è glue

  • Ubicazione del magazzino: questo è il tuo secchio da tavolo, specificato nel seguente formato: <accountid>:s3tablescatalog/<table-bucket-name>

  • URI dell'endpoint: consulta la guida di riferimento sugli endpoint del AWS Glue servizio per l'endpoint specifico della regione

L'esempio seguente mostra come inizializzare un pyIceberg catalogo.

rest_catalog = load_catalog( s3tablescatalog, **{ "type": "rest", "warehouse": "<accountid>:s3tablescatalog/<table-bucket-name>", "uri": "https://glue.<region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "glue", "rest.signing-region": region } )

Per ulteriori informazioni sul AWS Glue Iceberg REST implementazione dell'endpoint, vedere Connessione al catalogo dati utilizzando AWS Glue Iceberg REST endpoint nella Guida per l'AWS Glue utente.