Accesso alle tabelle utilizzando le tabelle Amazon S3 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 utilizzando le tabelle Amazon S3 Iceberg REST endpoint

Puoi connettere il tuo Iceberg REST client per le tabelle Amazon S3 Iceberg REST endpoint e make REST API chiamate per creare, aggiornare o interrogare tabelle nei bucket di tabelle S3. L'endpoint implementa una serie di standard Iceberg REST APIs specificato nel Apache Iceberg REST Specifiche dell'API Catalog Open. L'endpoint funziona traducendo Iceberg REST API operazioni nelle corrispondenti operazioni di S3 Tables.

Nota

Tabelle di Amazon S3 Iceberg REST l'endpoint può essere utilizzato per accedere alle tabelle nelle implementazioni del catalogo AWS Partner Network (APN) o nelle implementazioni del catalogo personalizzato. 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 si consiglia di utilizzare il AWS Glue Iceberg REST endpoint per connettersi alle tabelle, che fornisce gestione unificata delle tabelle, governance centralizzata e controllo granulare degli accessi. Per ulteriori informazioni, consulta Accesso alle tabelle Amazon S3 tramite AWS Glue Iceberg REST endpoint

Configurazione dell'endpoint

Ti connetti ai tavoli Amazon S3 Iceberg REST endpoint che utilizza l'endpoint del servizio. Tabelle S3 Iceberg REST gli endpoint hanno il seguente formato:

https://s3tables.<REGION>.amazonaws.com/iceberg

Tabelle ed endpoint S3 Regioni AWSPer gli endpoint specifici della regione, fare riferimento a.

Proprietà di 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. Sostituiscili placeholder values con le informazioni relative alla tua regione e al tuo bucket di tabella.

  • L'endpoint specifico della regione come URI dell'endpoint: https://s3tables.<REGION>.amazonaws.com/iceberg

  • Il tuo secchio da tavolo ARN come ubicazione del magazzino: arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>

  • Proprietà Sigv4 per l'autenticazione. Il nome di firma SigV4 per le richieste degli endpoint di servizio è: s3tables

I seguenti esempi mostrano come configurare diversi client per utilizzare le tabelle Amazon S3. Iceberg REST endpoint.

PyIceberg

Per utilizzare le tabelle Amazon S3 Iceberg REST endpoint con PyIceberg, specificare le seguenti proprietà di configurazione dell'applicazione:

rest_catalog = load_catalog( catalog_name, **{ "type": "rest", "warehouse":"arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>", "uri": "https://s3tables.<Region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "s3tables", "rest.signing-region": "<Region>" } )
Apache Spark

Per utilizzare le tabelle Amazon S3 Iceberg REST endpoint con Spark, specifica le seguenti proprietà di configurazione dell'applicazione, sostituendole placeholder values con le informazioni relative alla regione e al table bucket.

spark-shell \ --packages "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160" \ --master "local[*]" \ --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \ --conf "spark.sql.defaultCatalog=spark_catalog" \ --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \ --conf "spark.sql.catalog.spark_catalog.type=rest" \ --conf "spark.sql.catalog.spark_catalog.uri=https://s3tables.<Region>.amazonaws.com/iceberg" \ --conf "spark.sql.catalog.spark_catalog.warehouse=arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>" \ --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-name=s3tables" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-region=<Region>" \ --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \ --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider" \ --conf "spark.sql.catalog.spark_catalog.rest-metrics-reporting-enabled=false"

Autenticazione e autorizzazione dell'accesso all'endpoint

Le richieste API agli endpoint del servizio S3 Tables vengono autenticate utilizzando AWS Signature Version 4 (SigV4). Consulta AWS Signature Version 4 per le richieste API per saperne di più su SigV4. AWS

Il nome di firma SigV4 per Amazon S3 Tables Iceberg REST le richieste degli endpoint sono: s3tables

Richieste alle tabelle Amazon S3 Iceberg REST gli endpoint sono autorizzati utilizzando azioni s3tables IAM corrispondenti a REST operazioni API. Queste autorizzazioni possono essere definite in policy basate sull'identità IAM o in policy basate sulle risorse collegate a tabelle e bucket di tabelle. Per ulteriori informazioni, consulta Gestione degli accessi per Tabelle S3.

Puoi tenere traccia delle richieste fatte ai tuoi tavoli tramite REST endpoint con AWS CloudTrail. Le richieste verranno registrate come azione S3 IAM corrispondente. Ad esempio, un'LoadTableAPI genererà un evento di gestione per l'GetTableMetadataLocationoperazione e un evento di dati per l'GetTableDataoperazione. Per ulteriori informazioni, consulta Registrazione con AWS CloudTrail per le tabelle S3.

Parametri del prefisso e del percorso

Iceberg REST APIs i cataloghi hanno un prefisso in formato libero nella richiesta. URLs Ad esempio, la chiamata ListNamespaces API utilizza il GET/v1/{prefix}/namespaces formato URL. Per le tabelle S3, il percorso REST {prefix} è sempre l'ARN del bucket di tabella con codifica URL.

Ad esempio, per il seguente bucket di tabella ARNarn:aws:s3tables:us-east-1:111122223333:bucket/bucketname: il prefisso sarebbe: arn%3Aaws%3As3tables%3Aus-east-1%3A111122223333%3Abucket%2Fbucketname

parametro del percorso dello spazio dei nomi

Spazi dei nomi in un Iceberg REST il percorso dell'API del catalogo può avere più livelli. Tuttavia, S3 Tables supporta solo namespace a livello singolo. Per accedere a uno spazio dei nomi in una gerarchia di cataloghi a più livelli, puoi connetterti a un catalogo a più livelli sopra lo spazio dei nomi quando fai riferimento allo spazio dei nomi. Ciò consente a qualsiasi motore di query che supporti la notazione in 3 parti di accedere agli oggetti nella gerarchia del catalogo di S3 Tables senza problemi di catalog.namespace.table compatibilità rispetto all'utilizzo dello spazio dei nomi a più livelli.

Supportato Iceberg REST Operazioni API

La tabella seguente contiene i REST APIs di Iceberg supportati e il modo in cui corrispondono alle azioni di S3 Tables.

Operazione Iceberg REST Percorso REST Azione IAM di S3 Tables CloudTrail EventName

getConfig

GET /v1/config

s3tables:GetTableBucket

s3tables:GetTableBucket

listNamespaces

GET /v1/{prefix}/namespaces

s3tables:ListNamespaces

s3tables:ListNamespaces

createNamespace

POST /v1/{prefix}/namespaces

s3tables:CreateNamespace

s3tables:CreateNamespace

loadNamespaceMetadata

GET /v1/{prefix}/namespaces/{namespace}

s3tables:GetNamespace

s3tables:GetNamespace

dropNamespace

DELETE /v1/{prefix}/namespaces/{namespace}

s3tables:DeleteNamespace

s3tables:DeleteNamespace

listTables

GET /v1/{prefix}/namespaces/{namespace}/tables

s3tables:ListTables

s3tables:ListTables

createTable

POST /v1/{prefix}/namespaces/{namespace}/tables

s3tables:CreateTable, s3tables:PutTableData

s3tables:CreateTable, s3tables:PutObject

loadTable

GET /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:GetTableMetadataLocation, s3tables:GetTableData

s3tables:GetTableMetadataLocation, s3tables:GetObject

updateTable

POST /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableData

s3tables:UpdateTableMetadataLocation, s3tables:PutObject, s3tables:GetObject

dropTable

DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:DeleteTable

s3tables:DeleteTable

renameTable

POST /v1/{prefix}/tables/rename

s3tables:RenameTable

s3tables:RenameTable

tableExists

HEAD /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:GetTable

s3tables:GetTable

namespaceExists

HEAD /v1/{prefix}/namespaces/{namespace}

s3tables:GetNamespace

s3tables:GetNamespace

Considerazioni e limitazioni

Di seguito sono riportate considerazioni e limitazioni relative all'utilizzo delle tabelle Amazon S3 Iceberg REST endpoint.

Considerazioni
  • CreateTable Comportamento dell'API: stage-create l'opzione non è supportata per questa operazione e genera un 400 Bad Request errore. Ciò significa che non è possibile creare una tabella dai risultati delle query utilizzando CREATE TABLE AS SELECT (CTAS).

  • DeleteTable Comportamento delle API: puoi eliminare le tabelle solo con l'eliminazione abilitata. L'eliminazione di tabelle con non purge=false è supportata e genera un 400 Bad Request errore. Alcune versioni di Spark imposta sempre questo flag su false anche quando DROP TABLE PURGE esegui i comandi. Puoi provare DROP TABLE PURGE o utilizzare l'DeleteTableoperazione S3 Tables 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 delle istantanee, utilizza le operazioni dell'API di manutenzione di S3 Tables. Per ulteriori informazioni, consulta Manutenzione di Tabelle S3.

Limitazioni
  • I namespace multilivello non sono supportati.

  • OAuthl'autenticazione basata non è supportata.

  • Solo la owner proprietà è supportata per i namespace.

  • Relativo alla visualizzazione definito APIs in Apache Iceberg RESTLe specifiche Open API non sono supportate.

  • L'esecuzione di operazioni su una tabella con un metadata.json file di dimensioni superiori a 5 MB non è supportata e restituirà un 400 Bad Request errore. Per controllare la dimensione dei metadata.json file, utilizza le operazioni di manutenzione delle tabelle. Per ulteriori informazioni, consulta Manutenzione di Tabelle S3.