Como trabalhar com armazenamento compatível com Amazon S3

Este tópico fornece informações para ajudar você a acessar o armazenamento compatível com Amazon S3 do Snowflake.

Um aplicativo ou dispositivo de armazenamento é compatível com Amazon S3 se fornecer uma interface de programação de aplicativo (API) que está em conformidade com o padrão da indústria Amazon Simple Storage Service (S3) REST API. Amazon S3 REST API permite operações CRUD e ações administrativas em objetos e buckets de warehouses.

Com o Snowflake, você pode usar um estágio externo para se conectar a um número crescente de soluções de armazenamento compatíveis com S3, incluindo armazenamento local e dispositivos que existem fora da nuvem pública. O estágio externo armazena um ponto de extremidade compatível com API S3, nome e caminho do bucket e credenciais. Para permitir que os usuários carreguem e descarreguem dados de e para os locais de armazenamento, você concede privilégios no estágio às funções.

Você pode usar o suporte Snowflake para armazenamento compatível com Amazon S3 para executar tarefas como:

Suporte para a plataforma de nuvem

Este recurso está disponível para contas Snowflake hospedadas em qualquer uma das plataformas em nuvem suportadas:

  • Amazon Web Services

  • Google Cloud

  • Microsoft Azure

Requisitos para armazenamento compatível com S3

Um ponto de extremidade da API compatível com S3 para Snowflake deve atender aos seguintes requisitos:

  • Altamente compatível com o API S3 capaz de passar nosso suíte de teste público (em GitHub). Se o ponto de extremidade não se comportar como S3, ele não poderá funcionar com o Snowflake.

  • Com suporte pelo seu provedor de armazenamento de terceiros como um serviço Snowflake compatível, testado e em conformidade com S3. Para obter uma lista de fornecedores que testaram pelo menos alguns de seus produtos e descobriram que funcionam com o Snowflake, consulte Suporte ao fornecedor para armazenagem compatível com S3..

  • Acessível a partir da nuvem pública onde sua conta Snowflake está hospedada.

  • Alta disponibilidade e desempenho para atender às necessidades de análise.

  • Configurado para usar solicitações de estilo de hospedagem virtual. Para mais informações, veja Hospedagem virtual de buckets na documentação do Amazon S3.

  • Configurado para usar comunicação HTTPS com um certificado TLS válido.

  • Configurado para usar credenciais diretas.

  • Não contém um número de porta. Por exemplo, o ponto de extremidade mystorage.com:3000 não é suportado.

Importante

Os pontos de extremidade compatíveis com Amazon S3 não são ativados automaticamente para todas as contas. Para solicitar, entre em contato com a equipe de conta Snowflake ou com o suporte Snowflake. Não esqueça de verificar os pontos de extremidade usando nossa suíte de teste pública (em GitHub) antes de enviar a solicitação.

Forneça as seguintes informações com sua solicitação:

  • O nome de sua conta Snowflake e a implantação da região da nuvem.

  • O URL do ponto de extremidade (ou seja, my-s3-endpoint.company.com).

  • O fornecedor de software ou hardware que fornece o ponto de extremidade.

Criação de um estágio externo para armazenamento compatível com S3

Para criar um estágio externo para armazenamento compatível com S3, crie um estágio externo nomeado usando o comando CREATE STAGE. Um objeto de preparação nomeado pode ser usado para listar arquivos, carregar dados e descarregar arquivos, entre outras ações SQL.

Opcionalmente, adicione uma tabela de diretório ao estágio externo. Você pode consultar uma tabela de diretório para recuperar URLs de arquivo para acessar arquivos no armazenamento referenciado, bem como outros metadados.

Nota

Ao adicionar uma tabela de diretório, você deve definir o parâmetro AUTO_REFRESH como FALSE. Os metadados para estágios externos compatíveis com S3 não podem ser atualizados automaticamente.

O exemplo a seguir cria um estágio externo chamado my_s3_compat_stage que aponta para o bucket e caminho my_bucket/files/ no ponto de extremidade mystorage.com. Os valores AWS_KEY_ID e AWS_SECRET_KEY utilizados neste exemplo são apenas para fins ilustrativos.

CREATE STAGE my_s3compat_stage
  URL = 's3compat://my_bucket/files/'
  ENDPOINT = 'mystorage.com'
  CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')
Copy

Carregamento e descarregamento de dados

Você pode carregar e descarregar dados usando um estágio externo configurado para armazenamento compatível com S3. Os seguintes recursos funcionam com armazenamento compatível com S3:

Ampliação de seu data lake usando tabelas externas

Você pode usar tabelas externas com armazenamento compatível com S3 para consultar dados sem primeiro carregá-los no Snowflake. Esta seção aborda brevemente como criar e consultar uma tabela externa que faça referência a um local em um estágio externo configurado para armazenamento compatível com S3.

Comece criando uma tabela externa usando CREATE EXTERNAL TABLE que faz referência a um estágio externo compatível com S3.

Nota

Os metadados para estas tabelas externas não podem ser atualizados automaticamente. A configuração do parâmetro AUTO_REFRESH = TRUE não é suportada. Você deve atualizar manualmente os metadados executando um comando ALTER EXTERNAL TABLE … REFRESH para registrar quaisquer arquivos adicionados ou removidos.

O exemplo a seguir cria uma tabela externa chamada et que faz referência ao subcaminho path1 em um estágio chamado my_s3compat_stage. Os arquivos no subcaminho path1 estão no formato Apache Parquet.

CREATE EXTERNAL TABLE et
 LOCATION=@my_s3compat_stage/path1/
 AUTO_REFRESH = FALSE
 REFRESH_ON_CREATE = TRUE
 FILE_FORMAT = (TYPE = PARQUET);
Copy

Depois de criar uma tabela externa para armazenamento compatível com S3, você pode consultá-la. Por exemplo, consulte a coluna value na tabela externa criada anteriormente:

SELECT value FROM et;
Copy

O desempenho das consultas varia dependendo da rede e do aplicativo ou do desempenho do dispositivo. Se o desempenho for crítico, recomendamos a criação de uma exibição materializada na tabela externa.

Suporte ao fornecedor para armazenagem compatível com S3.

Você pode usar dispositivos ou aplicativos que tenham uma API compatível com S3 com Snowflake. No entanto, seu provedor de serviços de armazenamento é responsável por garantir a conformidade.

Os seguintes fornecedores indicaram à Snowflake que testaram pelo menos alguns de seus produtos e constataram que eles funcionam com o Snowflake:

  • Backblaze

  • Cloudflare

  • Cloudian

  • Cohesity

  • Dell

  • Hitachi Content Platform

  • IDrive e2

  • MinIO

  • NetApp (StorageGRID)

  • Nutanix

  • PureStorage

  • Scality

  • Wasabi

Esta lista é fornecida apenas por conveniência. Snowflake não testa produtos externos para validar a compatibilidade e não pode corrigir problemas em produtos vendidos por terceiros. Se você tiver dúvidas sobre se ou como seu hardware ou software com um API S3 funciona com o Snowflake, recomendamos que você entre em contato diretamente com o fornecedor.

Teste de seu API compatível com S3

Se você for um desenvolvedor de hardware ou software que criou uma API compatível com S3, você pode usar nosso suíte de teste público (em GitHub) para testar se sua S3 API funciona com Snowflake. Este suíte de testes procura por discrepâncias óbvias entre sua implementação e o que Snowflake espera do S3. No entanto, pode haver casos em que os testes não identifiquem incompatibilidade.

Se você for um cliente e deseja testar seus próprios dispositivos, recomendamos que entre em contato com seu fornecedor para realizar estes testes. Você também pode executar esses testes públicos em seus dispositivos para avaliar a compatibilidade.