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 Amazon S3 projetados para armazenar tabelas gerenciadas pela AWS, como tabelas do S3 Metadata, 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 nome do bucket de origem. Esse namespace predefinido 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 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 Só 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 da Acesso somente leitura. Acesso total.
Criptografia Você pode alterar as configurações de criptografia padrão (SSE-S3) somente se tiver criptografado a tabela inicial com uma chave do AWS Key Management Service (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 Gerenciado pela Serviços da AWS É possível personalizar a manutenção automatizada em nível de bucket.

Permissões para trabalhar com buckets de tabela gerenciados pela AWS para consultar tabelas

Para trabalhar com buckets de tabela gerenciados pela AWS, você precisa de permissões para criar buckets de tabela e tabelas gerenciados pela AWS e especificar configurações de criptografia para tabelas gerenciadas pela AWS. Você também precisa de permissões para consultar as tabelas em seus buckets de tabela gerenciados pela AWS.

A seguinte política de exemplo permite que você crie um bucket de tabela gerenciado pela AWS por meio de uma configuração do 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" ] } ] }

A seguinte política de exemplo permite que você consulte tabelas em buckets de tabela gerenciados pela 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" ] } ] }

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 seguinte 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 seguinte exemplo mostra como unir tabelas gerenciadas pela AWS com 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 seguinte exemplo 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 seguinte exemplo mostra como unir uma tabela gerenciada pela AWS com 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.