Accesso alle tabelle Amazon S3 utilizzando l’endpoint AWS Glue Iceberg REST
Una volta che i bucket di tabelle S3 sono integrati con il AWS Glue Data Catalog è possibile utilizzare l’endpoint AWS Glue Iceberg REST per connettersi alle tabelle S3 da client compatibili con Apache Iceberg, come PyIceberg o Spark. L’endpoint AWS Glue Iceberg REST implementa la specifica Iceberg REST Catalog Open API
Per una procedura dettagliata sull’utilizzo di PyIceberg, consulta Accesso ai dati in Tabelle Amazon S3 utilizzando PyIceberg tramite l’endpoint AWS Glue Iceberg REST
Prerequisiti
Creazione di un ruolo IAM per il client
Per accedere alle tabelle tramite gli endpoint AWS Glue, è necessario creare un ruolo IAM con autorizzazioni per le azioni AWS Glue e Lake Formation. Questa procedura spiega come creare questo ruolo e configurarne le autorizzazioni.
Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. Nel riquadro di navigazione sinistro, scegli Policy.
Scegli Crea una policy e scegliere JSON nell'editor delle policy.
Aggiungi la seguente policy inline che fornisce le autorizzazioni per accedere alle azioni AWS Glue e Lake Formation:
-
Dopo aver creato la policy, crea un ruolo IAM e scegli Policy di attendibilità personalizzata per Tipo di entità attendibile.
-
Inserisci quanto segue per la Policy di attendibilità personalizzata.
Definizione dell’accesso in Lake Formation
Lake Formation fornisce un controllo granulare degli accessi per le tabelle del data lake. Al momento dell’integrazione del bucket S3 con il AWS Glue Data Catalog, le tabelle sono state automaticamente registrate come risorse in Lake Formation. Per accedere a queste tabelle, è necessario fornire autorizzazioni specifiche di Lake Formation all’identità IAM, oltre alle autorizzazioni relative alle relative policy IAM.
Le seguenti fasi spiegano come applicare i controlli degli accessi di Lake Formation per consentire al client Iceberg di connettersi alle tabelle. È necessario accedere come amministratore del data lake per applicare queste autorizzazioni.
Consenso per l’accesso ai dati delle tabelle dai motori esterni
In Lake Formation, è necessario abilitare l’accesso completo alle tabelle 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.
Aprire la console Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/
Aprire la console Lake Formation all’indirizzo https://console.aws.amazon.com/lakeformation/
e accedere come amministratore del data lake. Nel riquadro di navigazione, scegliere Impostazioni di integrazione di applicazioni in Amministrazione.
Selezionare 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, si forniscono a Lake Formation le autorizzazioni per il ruolo IAM creato per il client compatibile con Iceberg. Queste autorizzazioni consentono al ruolo di creare e gestire tabelle nel namespace. È necessario fornire sia le autorizzazioni a livello di database sia a livello di tabella. Per ulteriori informazioni, consulta Concessione dell’autorizzazione Lake Formation per una tabella o un database.
Configurazione dell’ambiente per l’utilizzo dell’endpoint
Dopo aver configurato il ruolo IAM con le autorizzazioni necessarie per l’accesso alla tabella, è possibile utilizzarlo per eseguire i client Iceberg dal computer locale configurando AWS CLI con il ruolo tramite 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 l’endpoint AWS Glue REST, è necessario inizializzare un catalogo nel client compatibile con Iceberg. Questa inizializzazione richiede la specifica di proprietà personalizzate, tra cui le proprietà sigv4, l’URI dell’endpoint e la posizione del warehouse. Queste proprietà si specificano come segue:
-
Proprietà Sigv4: Sigv4 deve essere abilitato, il nome della firma è
glue -
Posizione del warehouse: è il bucket di tabelle, specificato nel formato
<accountid>:s3tablescatalog/<table-bucket-name> -
URI dell’endpoint: consulta la Guida di riferimento degli endpoint del servizio AWS Glue
L’esempio seguente mostra come inizializzare un catalogo pyIceberg.
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 sull’implementazione degli endpointAWS Glue Iceberg REST, consulta Connessione al Catalogo dati utilizzando l’endpoint AWS GlueIceberg REST nella Guida per l’utente di AWS Glue.