Trabalhar com buckets de tabela gerenciados pela AWS - Amazon Simple Storage Service

Trabalhar com buckets de tabela gerenciados pela AWS

Os buckets de tabela gerenciados pela AWS são buckets de tabela especializados do S3 projetados para armazenar tabelas gerenciadas pela AWS, como tabelas de diário e de inventário em tempo real. Diferentemente dos buckets de tabela gerenciados pelo cliente, que você cria e gerencia diretamente, os buckets de tabela gerenciados pela AWS são provisionados automaticamente pela AWS quando você configura recursos que exigem tabelas gerenciadas pela AWS. Quando as tabelas gerenciadas são criadas, elas pertencem a um namespace predefinido com base no bucket de origem que não pode ser modificado. Cada conta da AWS tem um bucket de tabela gerenciado pela AWS por região, seguindo a convenção de nomenclatura do aws-s3. Esse bucket serve como um local centralizado para todas as tabelas gerenciadas associadas aos recursos da sua conta nessa região.

A tabela a seguir compara os buckets de tabela gerenciados pela AWS com os buckets de tabela gerenciados pelo cliente.

Recurso Buckets de tabela gerenciados pela AWS Buckets de tabela gerenciados pelo cliente
Criação Criados automaticamente por serviços da AWS. Você os cria manualmente.
Nomenclatura Usam uma convenção de nomenclatura padrão (aws-s3). Você define seus próprios nomes.
Criação de tabela Somente serviços da AWS podem criar tabelas. Você pode criar tabelas.
Controle de namespace Não é possível criar ou excluir namespaces (todas as tabelas pertencem a um namespace fixo). Você pode criar e excluir namespaces.
Acesso Acesso somente leitura. Acesso total.
Criptografia Você só pode alterar as configurações de criptografia padrão (SSE-S3) se tiver criptografado a tabela inicial com uma chave do AWS KMS gerenciada pelo cliente. Você pode definir a criptografia padrão em nível de bucket e modificá-la a qualquer momento.
Manutenção Serviços gerenciados pela AWS. A manutenção automatizada pode ser personalizada em nível de bucket.

Permissões para criar buckets de tabela gerenciados pela AWS

Para trabalhar com buckets de tabela gerenciados pela AWS, você precisa de permissões para criar tabelas e buckets de tabela gerenciados pela AWS e especificar configurações de criptografia para tabelas gerenciadas pela AWS, bem como de permissões básicas de leitura para consultar tabelas.

Veja o seguinte exemplo de política que permitirá que você crie um bucket de tabela gerenciado pela AWS por meio de configurações de serviço:

{ "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:region:111122223333:bucket/aws-s3", "arn:aws:s3tables:region:111122223333:bucket/aws-s3/table/*" ] } ] }

Veja o seguinte exemplo de política que permitirá que você consulte tabelas em buckets de tabela gerenciados pela AWS:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3tables:GetTable", "s3tables:GetTableData", "s3tables:GetTableMetadataLocation", "kms:Decrypt" ], "Resource":[ "arn:aws:s3tables:region:111122223333:bucket/aws-s3", "arn:aws:s3tables:region:111122223333:bucket/aws-s3/table/*" ] } ] }

Consultar tabelas em buckets de tabela gerenciados pela AWS

Você pode consultar tabelas gerenciadas pela AWS em buckets de tabela gerenciados pela AWS usando métodos e mecanismos de acesso compatíveis com a funcionalidade Tabelas do S3. A seguir são apresentados alguns exemplos de consulta.

Using standard SQL

O exemplo a seguir mostra como consultar tabelas gerenciadas pela AWS usando a sintaxe SQL padrão.

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

O exemplo a seguir mostra como unir tabelas gerenciadas pela AWS às suas tabelas.

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

O exemplo a seguir mostra como consultar uma tabela com o Spark.

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

O exemplo a seguir mostra como unir uma tabela gerenciada pela AWS a outra tabela.

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

Criptografia para buckets de tabela gerenciados pela AWS

Por padrão, os buckets de tabela gerenciados pela AWS são criptografados com a criptografia do lado do servidor usando chaves gerenciadas pelo Amazon S3 (SSE-S3). Depois de criar o bucket de tabela gerenciado pela AWS, você poderá usar PutTableBucketEncryption para definir a configuração de criptografia padrão do bucket como criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS).

Durante a criação de tabelas gerenciadas pela AWS, você pode optar por criptografá-las com o SSE-KMS. Se você optar por usar o SSE-KMS, deverá fornecer uma chave do KMS gerenciada pelo cliente na mesma região do bucket de tabela gerenciado pela AWS. Você pode definir o tipo de criptografia de uma tabela gerenciada pela AWS somente ao criar a tabela. Após a criação de uma tabela gerenciada pela AWS, não é possível alterar a configuração de criptografia.

Se você quiser que o bucket de tabela AWS gerenciado e as tabelas armazenadas nele usem a mesma chave KMS, certifique-se de usar a mesma chave KMS que você usou para criptografar suas tabelas para criptografar o bucket de tabela depois de criado. Depois de alterar as configurações de criptografia padrão do bucket de tabelas para usar SSE-KMS, essas configurações de criptografia serão usadas para qualquer tabela futura criada no bucket.