Accesso alle tabelle utilizzando l’endpoint Iceberg REST di Tabelle Amazon S3
È possibile collegare il client Iceberg REST all’endpoint Iceberg REST di Tabelle Amazon S3 ed effettuare chiamate REST API per creare, aggiornare o sottoporre a query le tabelle nei bucket di tabelle S3. L’endpoint implementa un set di Iceberg REST API standardizzate specificate nella specifica Apache Iceberg REST Catalog Open API
Nota
L’endpoint Iceberg REST di Tabelle Amazon S3 può essere utilizzato per accedere alle tabelle nelle implementazioni di cataloghi AWS Partner Network (APN) o nelle implementazioni di cataloghi personalizzati. Può essere utilizzato anche se è necessario solo l’accesso di base in lettura/scrittura a un singolo bucket di tabelle. Per altri scenari di accesso, è consigliabile utilizzare l’endpoint AWS GlueIceberg REST per connettersi alle tabelle, che fornisce una gestione unificata delle tabelle, una governance centralizzata e un controllo granulare degli accessi. Per ulteriori informazioni, consulta . Accesso alle tabelle Amazon S3 utilizzando l’endpoint AWS Glue Iceberg REST
Configurazione dell’endpoint
Ci si connette all’endpoint Iceberg REST di Tabelle Amazon S3 utilizzando l’endpoint del servizio. Gli endpoint Iceberg REST di Tabelle S3 hanno il formato seguente:
https://s3tables.<REGION>.amazonaws.com/iceberg
Fai riferimento a Endpoint e Regioni AWS di Tabelle S3 per gli endpoint specifici della Regione.
Proprietà della configurazione del catalogo
Quando si utilizza un client Iceberg per connettere un motore di analisi all’endpoint del servizio, è necessario specificare le seguenti proprietà di configurazione quando si inizializza il catalogo. Sostituisci i valori segnaposto con le informazioni relative alla Regione e al bucket di tabelle.
L’endpoint specifico della Regione come l’URI dell’endpoint:
https://s3tables.<REGION>.amazonaws.com/icebergL’ARN del bucket di tabelle come posizione del warehouse:
arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>Proprietà Sigv4 per l’autenticazione. Il nome di firma SigV4 per le richieste degli endpoint del servizio è:
s3tables
I seguenti esempi illustrano come configurare client diversi per utilizzare l’endpoint Iceberg REST di Tabelle Amazon S3.
Autenticazione e autorizzazione dell’accesso all’endpoint
Le richieste API agli endpoint del servizio Tabelle S3 vengono autenticate utilizzando AWS Signature Version 4 (SigV4). Consulta AWS Signature Version 4 per le richieste API per ulteriori informazioni su AWS SigV4.
Il nome di firma SigV4 per le richieste degli endpoint Iceberg REST di Tabelle Amazon S3 è: s3tables
Le richieste all’endpoint Iceberg REST di Tabelle Amazon S3 sono autorizzate utilizzando azioni IAM s3tables che corrispondono alle operazioni REST API. Queste autorizzazioni possono essere definite in policy basate su identità IAM o in policy basate su risorse collegate a tabelle e bucket di tabelle. Per ulteriori informazioni, consulta Gestione degli accessi per Tabelle S3.
È possibile monitorare le richieste effettuate alle tabelle tramite l’endpoint REST con AWS CloudTrail. Le richieste verranno registrate nei log come azioni IAM S3 corrispondenti. Ad esempio, un’API LoadTable genererà un evento di gestione per l’operazione GetTableMetadataLocation e un evento di dati per l’operazione GetTableData. Per ulteriori informazioni, consulta Registrazione con AWS CloudTrail per Tabelle S3.
Prefisso e parametri di percorso
Le API del catalogo Iceberg REST hanno un prefisso in formato libero negli URL delle richieste. Ad esempio, la chiamata API ListNamespaces utilizza il formato URL GET/v1/{prefix}/namespaces. Per Tabelle S3, il {prefix} del percorso REST è sempre l’ARN del bucket di tabelle con codifica URL.
Ad esempio, per il seguente ARN di bucket di tabelle: arn:aws:s3tables: il prefisso sarebbe: us-east-1:111122223333:bucket/bucketnamearn%3Aaws%3As3tables%3A us-east-1%3A111122223333%3Abucket%2Fbucketname
Parametro del percorso namespace
I namespace in un percorso API del catalogo Iceberg REST possono avere più livelli. Tuttavia, Tabelle S3 supporta solo namespace con un singolo livello. Per accedere a un namespace in una gerarchia di cataloghi con più livelli, è possibile connettersi a un catalogo con più livelli sopra il namespace per fare riferimento al namespace. Ciò consente a qualsiasi motore di query che supporti la notazione in tre parti catalog.namespace.table di accedere agli oggetti nella gerarchia del catalogo di Tabelle S3 senza problemi di compatibilità rispetto all’utilizzo del namespace multilivello.
Operazioni Iceberg REST API supportate
La tabella seguente contiene le Iceberg REST API supportate e il modo in cui corrispondono alle azioni di Tabelle S3.
| Operazione Iceberg REST | Percorso REST | Azione IAM di Tabelle S3 | Nome dell’evento CloudTrail |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Considerazioni e limitazioni
Di seguito sono riportate le considerazioni e le limitazioni relative all’utilizzo dell’endpoint Iceberg REST di Tabelle Amazon S3.
Considerazioni
Comportamento dell’API CreateTable: l’opzione
stage-createnon è supportata per questa operazione e genera un errore400 Bad Request. Ciò significa che non è possibile creare una tabella dai risultati della query utilizzandoCREATE TABLE AS SELECT(CTAS).Comportamento dell’API DeleteTable: è possibile eliminare le tabelle solo se l’eliminazione è abilitata. L’eliminazione di tabelle con
purge=falsenon è supportata e genera un errore400 Bad Request. Alcune versioni di Spark impostano sempre questo flag su false anche quando eseguono i comandiDROP TABLE PURGE. È possibile provare conDROP TABLE PURGEo utilizzare l’operazione DeleteTable di Tabelle S3 per eliminare una tabella.-
L’endpoint supporta solo le operazioni standard sui metadati delle tabelle. Per la manutenzione delle tabelle, come la gestione e la compattazione di snapshot, utilizza le operazioni API di manutenzione di Tabelle S3. Per ulteriori informazioni, consulta Manutenzione di Tabelle S3.
Limitazioni
I namespace multilivello non sono supportati.
L’autenticazione basata su OAuth non è supportata.
Solo la proprietà
ownerè supportata per i namespace.Le API relative alla visualizzazione definite nella specifica Apache Iceberg REST Open API
non sono supportate. L’esecuzione di operazioni su una tabella con un file
metadata.jsonsuperiore a 5 MB non è supportata e restituirà un errore400 Bad Request. Per controllare la dimensione dei filemetadata.json, utilizza le operazioni di manutenzione delle tabelle. Per ulteriori informazioni, consulta Manutenzione di Tabelle S3.