3 pontos por GN⁺ 2024-04-20 | 1 comentários | Compartilhar no WhatsApp

Compatibilidade com S3 e lançamento oficial de Resumable Uploads no Supabase Storage

  • O Supabase Storage agora se tornou um provedor de armazenamento compatível com S3. Esse era um dos recursos mais solicitados e já está disponível em alfa pública.
  • Resumable Uploads também saiu da versão beta e passou para a versão oficial.
  • O mecanismo do Supabase Storage é totalmente open source e é uma das poucas soluções de armazenamento que oferecem 3 protocolos interoperáveis para gerenciamento de arquivos.
    • Standard uploads: fácil de começar
    • Resumable uploads: uploads retomáveis para arquivos grandes
    • S3 uploads: para compatibilidade com várias ferramentas

Compatibilidade com S3

  • O Supabase sempre buscou adotar padrões da indústria. Dar suporte a padrões permite portar workloads, e isso é um princípio central do produto.
  • A API S3 é, sem dúvida, o padrão de armazenamento, e estamos tornando seu uso acessível a desenvolvedores de diferentes níveis de experiência.
  • O protocolo S3 é retrocompatível com as outras APIs. Se você já usa o Storage via API REST ou TUS, a partir de hoje pode usar clientes S3 para interagir com buckets e arquivos: fazer upload com TUS, servir com REST e gerenciar com o protocolo S3.
  • Esse protocolo funciona na nuvem, em desenvolvimento local e em self-hosting. Confira a compatibilidade da API na documentação.

Autenticação S3 no Supabase

  • Há 2 opções para se autenticar no Supabase S3:
    1. Credenciais padrão de access_key e secret_key. Elas podem ser geradas na página de configurações de armazenamento. Esse método de autenticação é amplamente compatível com ferramentas que suportam o protocolo S3. Como concede acesso total aos recursos de Storage, foi projetado para uso apenas no lado do servidor.
      • No futuro, serão adicionadas credenciais de chave de acesso com escopo, que poderão ter permissão para acessar buckets específicos.
    2. Credenciais com escopo de usuário usando RLS. Isso aproveita o conceito de Row Level Security, amplamente adotado em todos os serviços do Supabase. É possível interagir com o protocolo S3 limitando as operações de armazenamento a um usuário ou papel autenticado específico, respeitando as políticas RLS já existentes. Esse método é viabilizado pelo uso do cabeçalho de token de sessão suportado pelo protocolo S3. Mais detalhes sobre como usar o mecanismo de token de sessão estão na documentação.

Integrações compatíveis com S3

  • Com suporte ao protocolo S3, agora é possível conectar o Supabase Storage a muitas ferramentas e serviços de terceiros. Basta fornecer um par de credenciais que pode ser revogado a qualquer momento.
  • Você pode usar ferramentas populares para backup e migração, como AWS CLI, rclone e Cyberduck.
  • Confira o guia do Cyberduck.

S3 para engenheiros de dados

  • A compatibilidade com S3 fornece uma base sólida para engenheiros de dados. Ela pode ser usada com muitas ferramentas populares, como data warehouses como ClickHouse, motores de consulta como DuckDB, Spark, Trino e Snowflake External Table, além de carregadores de dados como Fivetran e Airbyte.
  • Nos exemplos, nosso incrível analista de dados Tyler mostra como armazenar arquivos Parquet no Supabase Storage e consultá-los diretamente com DuckDB.

Upload multipart no S3

  • Além de standard uploads e resumable uploads, agora também há suporte a upload multipart via protocolo S3. Isso permite enviar chunks em paralelo para maximizar a taxa de transferência do upload, com junção ao final.

Lançamento oficial de Resumable Uploads

  • Junto com o anúncio de GA da plataforma, temos o prazer de compartilhar que Resumable Uploads também foi oficialmente lançado.
  • Resumable Uploads é impulsionado pelo protocolo TUS. Esse processo foi muito gratificante em estreita colaboração com a equipe do TUS. Um grande agradecimento a @murderlon e @acconut, mantenedores do protocolo TUS, pela abordagem colaborativa ao open source.

Contribuições do Supabase

  • O Supabase contribuiu com alguns recursos avançados para a implementação em Node da especificação TUS, incluindo locking distribuído, tamanho máximo de arquivo, extensão de expiração e inúmeras correções de bugs.
  • Esses recursos eram essenciais para o Supabase e estão disponíveis porque o servidor TUS para Node é open source. Esse é outro princípio central: usar e apoiar ferramentas existentes em vez de desenvolver tudo do zero quando possível.

Outras melhorias

  • Transferência entre buckets: antes, operações que só podiam ser feitas dentro do mesmo bucket do Supabase agora permitem copiar e mover objetos entre buckets.
  • Códigos de erro padronizados: os códigos de erro foram padronizados em todo o servidor de Storage, e agora ficou muito mais fácil usar lógica de tratamento específica para cada erro.
  • Migrações multi-tenant: houve uma grande melhoria nas migrações executadas em todos os tenants. Isso reduziu erros de migração em toda a frota e permite executar migrações longas de forma assíncrona.
  • Separação de dependências: o Storage foi totalmente desacoplado de outros produtos do Supabase, permitindo executá-lo como um serviço standalone. Comece com o arquivo docker-compose.

Como começar

  • Confira a compatibilidade da API S3 na documentação
  • Saiba mais sobre autenticação S3
  • Experimente S3 com o Cyberduck: siga o guia de integração
  • Experimente S3 com DuckDB: siga o guia no YouTube

Opinião do GN⁺

  • A compatibilidade com S3 aproxima o Supabase Storage do padrão de armazenamento em nuvem. Como muitas empresas já usam S3, a migração para o Supabase fica muito mais fácil.
  • Mas, como S3 é originalmente um serviço da AWS, no longo prazo também valeria considerar o desenvolvimento de um protocolo próprio do Supabase. Deve-se evitar uma situação de dependência da Amazon.
  • Com o lançamento oficial de Resumable Upload, a transferência de arquivos grandes deve ficar bem mais simples. Destaca-se o fato de superar limitações do método anterior e melhorar a usabilidade.
  • Construir pipelines de engenharia de dados com S3 é um caso de uso atraente. Se bem aproveitado, isso pode ajudar na modernização da infraestrutura de dados das empresas.
  • É impressionante que o Supabase tenha contribuído diretamente para melhorar o protocolo TUS, e que isso retorne ao ecossistema open source em um ciclo virtuoso. A empresa cumpre bem o papel de contribuidora, e não apenas de usuária de open source.

1 comentários

 
GN⁺ 2024-04-20
Comentários do Hacker News
  • O CEO da Supabase apresentou uma nova atualização do produto Storage. O produto permite armazenar arquivos grandes e adiciona compatibilidade com S3, possibilitando o uso com milhares de ferramentas já existentes. Houve destaque especialmente para as possibilidades voltadas a cientistas e engenheiros de dados.

  • Um usuário comemorou poder aproveitar provedores de CDN com suporte a S3, mas apontou que a Supabase ainda tem pontos que precisam melhorar. No geral, avaliou positivamente a direção de evolução da Supabase.

  • Foi compartilhado um exemplo em que o DuckDB agora pode consultar arquivos parquet diretamente no Supabase Storage, que passou a oferecer suporte ao protocolo S3.

  • Também houve a opinião de um usuário que prefere a forma de armazenamento de Large Objects do PostgreSQL.

  • Foi levantada uma pergunta sobre a facilidade de self-hosting da Supabase. A pessoa queria saber quão fácil seria migrar para self-hosting por causa de custos.

  • Junto com a notícia de que a Supabase contratou a equipe da Oriole, também apareceu a opinião de um usuário que está considerando integração com o Cloudflare R2.

  • Houve perguntas sobre a forma como o Supabase Storage é implementado, especialmente se os dados são realmente armazenados no PostgreSQL e se há suporte a atualizações transacionais.

  • Um usuário expressou confiança e apego à Supabase, desejando que ela não seja adquirida e acabe sendo descaracterizada.

  • Também houve uma opinião expressando estranheza com o fato de a API proprietária do AWS S3 ter se tornado, na prática, um padrão da indústria.

  • Também foi levantada uma pergunta sobre suporte a URL pré-assinada (pre-signed URL).