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');
Copy

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';
Copy

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/';
Copy