Configuração de um volume externo¶
Um volume externo é um objeto Snowflake nomeado ao nível de conta, que você usa para conectar o Snowflake ao seu armazenamento em nuvem externo para tabelas Iceberg. Um volume externo armazena uma entidade de gerenciamento de identidade e acesso (IAM) para seu local de armazenamento. O Snowflake usa a entidade de IAM para se conectar com segurança ao seu armazenamento e acessar dados de tabela, metadados Iceberg e arquivos de manifesto que armazenam o esquema de tabela, partições e outros metadados.
Um único volume externo pode oferecer suporte a uma ou mais tabelas Iceberg.
Você deve criar um volume externo antes de poder criar uma tabela Apache Iceberg™ no Snowflake.
Criação de um volume externo¶
As etapas para criar um volume externo dependem do seu provedor de armazenamento em nuvem.
Para obter instruções, consulte os seguintes tópicos:
Cada volume externo é associado a um Local de armazenamento ativo específico, e um único volume externo pode oferecer suporte a várias tabelas Iceberg. No entanto, o número de volumes externos necessários depende de como você deseja armazenar, organizar e proteger os dados da sua tabela.
Você pode usar um único volume externo se quiser os dados e metadados de todas as suas tabelas Snowflake-Iceberg em subdiretórios no mesmo local de armazenamento (por exemplo, no mesmo bucket S3). Para configurar esses diretórios para tabelas gerenciadas pelo Snowflake, consulte Diretórios de dados e metadados.
Como alternativa, você pode criar vários volumes externos para proteger vários locais de armazenamento de forma diferente. Por exemplo, você pode criar os seguintes volumes externos:
Um volume externo somente leitura para tabelas Iceberg gerenciadas externamente.
Um volume externo configurado com acesso de leitura e gravação para tabelas gerenciadas pelo Snowflake.
Verificar um volume externo¶
Para verificar se o Snowflake pode se autenticar com sucesso no seu provedor de armazenamento usando um volume externo que você configurou, chame a função SYSTEM$VERIFY_EXTERNAL_VOLUME.
Especifique o nome do volume externo que você deseja verificar.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Definir um volume externo padrão no nível da conta, do banco de dados ou do esquema¶
Para definir um volume externo existente como padrão a ser usado para tabelas Iceberg, você pode definir o parâmetro EXTERNAL_VOLUME nos seguintes níveis:
- Conta:
Os administradores de conta podem usar o comando ALTER ACCOUNT para definir o parâmetro para a conta. Se o valor for definido para a conta, todas as tabelas Iceberg criadas na conta serão lidas e gravadas nesse volume externo por padrão.
- Objeto:
Os usuários podem executar o comando CREATE <objeto> ou ALTER <objeto> apropriado para substituir o valor do parâmetro EXTERNAL_VOLUME no nível do banco de dados ou esquema. A declaração de escopo mais baixo é usada: esquema > banco de dados > conta.
Além dos privilégios mínimos necessários para modificar um objeto usando o comando ALTER <tipo_de_objeto> apropriado, uma função deve ter o privilégio USAGE no volume externo.
Nota
As mudanças no parâmetro EXTERNAL_VOLUME só se aplicam a tabelas criadas após a alteração. As tabelas existentes continuam usando o volume externo especificado durante sua criação.
Exemplo¶
A instrução a seguir define um volume externo (my_s3_vol
) para um banco de dados denominado my_database_1
:
ALTER DATABASE my_database_1
SET EXTERNAL_VOLUME = 'my_s3_vol';
Depois de definir um volume externo no nível do banco de dados, você poderá criar uma tabela Iceberg nesse banco de dados sem especificar um volume externo. A instrução a seguir cria uma tabela Iceberg em my_database_1
que usa Snowflake como catálogo e usa o volume externo padrão (my_s3_vol
) definido para o banco de dados.
CREATE ICEBERG TABLE iceberg_reviews_table (
id STRING,
product_name STRING,
product_id STRING,
reviewer_name STRING,
review_date DATE,
review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';