Configuração de um volume externo para armazenamento compatível com S3

Para tabelas Iceberg gerenciadas externamente com dados e metadados em armazenamento compatível com S3, é possível configurar um volume externo associado a um local de armazenamento compatível com Amazon S3.

As tabelas Iceberg que usam armazenamento compatível com S3 são tabelas entre regiões e não são compatíveis com as seguintes ações:

Pré-requisitos

Para criar uma tabela Iceberg que use armazenamento compatível com S3, é necessário ter um ponto de extremidade de API compatível com S3 para o Snowflake. Para obter mais informações, consulte Requisitos para armazenamento compatível com S3.

Criação de um volume externo para armazenamento compatível com S3

As etapas a seguir demonstram como configurar um volume externo para armazenamento compatível com S3 e como usar esse volume para criar uma tabela Iceberg gerenciada externamente.

  1. Crie um volume externo que especifique um local de armazenamento compatível com S3. Para obter informações sobre os parâmetros compatíveis com S3 no comando CREATE EXTERNAL VOLUME, consulte a sintaxe do comando.

    CREATE OR REPLACE EXTERNAL VOLUME ext_vol_s3_compat
      STORAGE_LOCATIONS = (
        (
          NAME = 'my_s3_compat_storage_location'
          STORAGE_PROVIDER = 'S3COMPAT'
          STORAGE_BASE_URL = 's3compat://mybucket/unload/mys3compatdata'
          CREDENTIALS = (
            AWS_KEY_ID = '1a2b3c...'
            AWS_SECRET_KEY = '4x5y6z...'
          )
          STORAGE_ENDPOINT = 'mystorage.com'
        )
      )
      ALLOW_WRITES = FALSE;
    
    Copy
  2. Se você não tiver uma integração de catálogo, crie uma para a tabela Iceberg. As tabelas Iceberg que usam armazenamento compatível com S3 só são aceitas quando você usa uma integração de catálogo. Para obter mais informações, consulte Criação de uma integração de catálogo.

    O exemplo a seguir cria uma integração de catálogo para arquivos Iceberg no armazenamento de objetos.

    CREATE OR REPLACE CATALOG INTEGRATION my_iceberg_catalog_int
      CATALOG_SOURCE = OBJECT_STORE
      TABLE_FORMAT = ICEBERG
      ENABLED = TRUE;
    
    Copy
  3. Use o volume externo e a integração de catálogo para criar uma tabela Iceberg.

    Por exemplo:

    CREATE ICEBERG TABLE my_iceberg_table
      EXTERNAL_VOLUME = 'ext_vol_s3_compat'
      CATALOG = 'my_iceberg_catalog_int'
      METADATA_FILE_PATH = 'path/to/metadata/v1.metadata.json';
    
    Copy

Atualização de suas credenciais de volume externo

Para alterar ou atualizar as credenciais do volume externo, é possível usar o comando ALTER EXTERNAL VOLUME … UPDATE. Especifique o nome do local de armazenamento para o qual você deseja alterar as credenciais.

ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
  STORAGE_LOCATION = 'my_s3_compat_storage_location'
  CREDENTIALS = (
    AWS_KEY_ID = '4d5e6f...'
    AWS_SECRET_KEY = '7g8h9i...'
  );
Copy