Como trabalhar com armazenamento compatível com Amazon S3

Este tópico fornece informações sobre como 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 armazenamento 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 habilitar pontos de extremidade, entre em contato com a equipe de conta Snowflake ou com o Suporte da Snowflake. Antes de enviar uma solicitação, verifique os pontos de extremidade usando nosso conjunto de testes público (no GitHub).

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 (por exemplo, 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. Você pode usar um estágio externo para executar ações como listagem de arquivos, carregamento de dados e descarga de arquivos.

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 do 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, crie uma exibição materializada na tabela externa. As exibições materializadas são pré-calculadas, portanto, consultar uma exibição materializada é mais rápido do que executar uma consulta na tabela base da exibição.

Suporte ao fornecedor para armazenamento 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

  • IBM Storage Ceph

  • 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 como ou se o seu hardware ou software com um API S3 funciona com o Snowflake, entre em contato diretamente com o fornecedor.

Testar sua 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. Entretanto, pode haver casos em que os testes não identificam incompatibilidade.

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