Utilizzo dei bucket di tabelle gestiti da AWS - Amazon Simple Storage Service

Utilizzo dei bucket di tabelle gestiti da AWS

I bucket di tabelle gestiti da AWS sono bucket di tabelle specializzati di Amazon S3 progettati per archiviare tabelle gestite da AWS, come le tabelle di inventario in tempo reale e quelle del diario S3 Metadata. A differenza dei bucket di tabelle gestiti dal cliente che si creano e gestiscono direttamente, i bucket di tabelle gestiti da AWS vengono allocati automaticamente da AWS quando si configurano funzionalità che richiedono tabelle gestite da AWS. Quando vengono create, le tabelle gestite appartengono a un namespace predefinito basato sul nome del bucket di origine. Questo namespace predefinito non può essere modificato.

Ogni Account AWS ha un bucket di tabelle gestito da AWS per Regione, secondo la convenzione di denominazione aws-s3. Questo bucket funge da posizione centralizzata per tutte le tabelle gestite associate alle risorse dell’account nella Regione in uso.

La tabella seguente confronta i bucket di tabelle gestiti da AWS con i bucket di tabelle gestiti dal cliente.

Funzionalità Bucket di tabelle gestiti da AWS Bucket di tabelle gestiti dal cliente
Creazione Creati automaticamente da Servizi AWS Creati manualmente
Denominazione Utilizzano una convenzione di denominazione standard (aws-s3) I nomi vengono definiti dall’utente
Creazione di tabelle Solo i Servizi AWS possono creare tabelle Le tabelle possono essere create dall’utente
Controllo dei namespace Non è possibile creare o eliminare namespace (tutte le tabelle appartengono a un namespace fisso) I namespace possono essere creati ed eliminati dall’utente
Accesso Accesso in sola lettura Accesso completo
Crittografia È possibile modificare le impostazioni di crittografia predefinite (SSE-S3) solo se la tabella iniziale è stata crittografata con una chiave AWS Key Management Service (AWS KMS) gestita dal cliente La crittografia predefinita a livello di bucket può essere impostata e modificata in qualsiasi momento dall’utente
Manutenzione Gestita da Servizi AWS La manutenzione automatizzata a livello di bucket può essere personalizzata dall’utente

Autorizzazioni per utilizzare i bucket di tabelle gestiti da AWS e per eseguire query sulle tabelle

Per utilizzare i bucket di tabelle gestiti da AWS, sono necessarie le autorizzazioni per creare tabelle e bucket di tabelle gestiti da AWS e per specificare le impostazioni di crittografia per le tabelle gestite da AWS. Sono inoltre necessarie le autorizzazioni per eseguire query sulle tabelle nei bucket di tabelle gestiti da AWS.

La seguente policy di esempio consente di creare un bucket di tabelle gestito da AWS tramite una configurazione di S3 Metadata:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3:CreateBucketMetadataTableConfiguration", "s3tables:CreateTableBucket", "s3tables:CreateNamespace", "s3tables:CreateTable", "s3tables:GetTable", "s3tables:PutTablePolicy" "s3tables:PutTableEncryption", "kms:DescribeKey" ], "Resource":[ "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

La seguente policy di esempio consente di eseguire query sulle tabelle di bucket di tabelle gestiti da AWS:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToQueryMetadataTables", "Effect":"Allow", "Action":[ "s3tables:GetTable", "s3tables:GetTableData", "s3tables:GetTableMetadataLocation", "kms:Decrypt" ], "Resource":[ "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

Query sulle tabelle in bucket di tabelle gestiti da AWS

È possibile eseguire query sulle tabelle gestite da AWS in bucket di tabelle gestiti da AWS utilizzando i motori e i metodi di accesso supportati da Tabelle S3. Di seguito sono riportati alcuni esempi di query.

Using standard SQL

L’esempio seguente mostra come eseguire una query sulle tabelle gestite da AWS utilizzando la sintassi SQL standard:

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" LIMIT 10;

L’esempio seguente mostra come unire tabelle gestite da AWS con altre tabelle:

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" a JOIN "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" b ON a.key = b.key LIMIT 10;
Using Spark

L’esempio seguente mostra come eseguire una query sulla tabella con Spark:

spark.sql(""" SELECT * FROM ice_catalog.inventory a JOIN ice_catalog.my_table b ON a.key = b.key """).show(10, true)

L’esempio seguente mostra come unire la tabella gestita da AWS con un’altra tabella:

SELECT * FROM inventory a JOIN my_table b ON a.key = b.key LIMIT 10;

Crittografia per i bucket di tabelle gestiti da AWS

Per impostazione predefinita, i bucket di tabelle gestiti da AWS sono crittografati con crittografia lato server utilizzando chiavi gestite da Amazon S3 (SSE-S3). Dopo aver creato il bucket di tabelle gestito da AWS, è possibile utilizzare PutTableBucketEncryption per impostare la crittografia predefinita del bucket in modo da utilizzare la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS).

Durante la creazione delle tabelle gestite da AWS, è possibile scegliere di crittografarle con SSE-KMS. Se si sceglie di utilizzare SSE-KMS, è necessario fornire una chiave KMS gestita dal cliente nella stessa Regione del bucket di tabelle gestito da AWS. È possibile impostare il tipo di crittografia per le tabelle gestite da AWS solo durante la creazione della tabella. Dopo aver creato una tabella gestita da AWS, non è possibile modificarne le impostazioni di crittografia.

Se desideri che il bucket di tabelle gestito da AWS e le tabelle in esso archiviate utilizzino la stessa chiave KMS, assicurati di utilizzare la stessa chiave KMS utilizzata per crittografare le tabelle per crittografare il bucket di tabelle dopo averlo creato. Dopo aver modificato le impostazioni di crittografia predefinite per il bucket di tabelle in modo da utilizzare SSE-KMS, tali impostazioni di crittografia vengono utilizzate per tutte le future tabelle create nel bucket.