Skip to main content
O Blob Storage fala a API S3 em https://s3-blob.squarecloud.app. Qualquer ferramenta que permita definir um endpoint personalizado funciona: aws-cli, boto3, o AWS SDK para JavaScript, rclone, Cyberduck e a maioria das ferramentas de backup.

Credenciais

Ferramentas S3 assinam as requisições com um par de chaves de acesso. Obtenha-o em Credenciais S3:
O par é derivado da sua chave de API. Ele não precisa de gerenciamento separado: revogar ou regenerar a chave faz o mesmo com o par, e o par recebe os mesmos escopos. Uma chave com apenas blob:read gera um par somente leitura. O par não muda enquanto a chave de API não mudar, então busque-o uma vez e guarde-o no seu gerenciador de segredos ou em uma variável de ambiente. Não chame a rota a cada inicialização: ela aceita 10 requisições por hora.

Buckets

A sua conta enxerga três buckets fixos. Não é possível criar nem excluir buckets. Uma chave no bucket public ou private é o caminho do objeto sem o seu ID de usuário: images/logo.png no bucket public é o objeto pub/<user_id>/images/logo.png na API REST. Arquivos gravados pelo S3 aparecem na API REST e no dashboard, e vice-versa.

Configuração

O boto3 precisa de signature_version="s3v4" para URLs pré-assinadas: sem isso, o generate_presigned_url assina com o SigV2 antigo, que o gateway não aceita. URLs pré-assinadas duram até 7 dias (604800 segundos).
As respostas do gateway nunca ficam em cache no edge. Uma URL pré-assinada deixa de funcionar exatamente quando expira, quando a chave de API é revogada ou quando o objeto é excluído.

Operações suportadas

Políticas de bucket, CORS, lifecycle, website, criptografia, object lock, versões, logging, notificações, replicação, escrita de ACL e de tags, GET por partNumber e uploads por formulário POST do navegador respondem 501 NotImplemented. Use as configurações da conta para regras de lifecycle.

Chaves

  • As chaves são caminhos literais. Uma chave pode ter até cerca de 1000 bytes: o limite de 1024 bytes também conta o prefixo da conta. Uma chave maior responde KeyTooLongError, e a mensagem diz o número exato de bytes que você tem. Os segmentos não podem ser vazios, . ou ...
  • Uma chave de 0 bytes terminada em / é um marcador de pasta, do jeito que o console da AWS cria pastas.
  • O Content-Type servido é derivado da extensão, como na API REST. Executáveis são recusados com InvalidArgument, e .html, .svg e .xml são servidos como download.

Metadados, cache e expiração

  • Os cabeçalhos x-amz-meta-* são mantidos no Pro e no Enterprise (até 5 chaves e 512 bytes, caso contrário MetadataTooLarge). Nos demais planos eles são descartados.
  • Cache-Control e Content-Disposition são mantidos. Um Cache-Control sem cache (no-cache, no-store ou max-age=0) fora do Enterprise é recusado com AccessDenied.
  • As regras por prefixo se aplicam aos objetos gravados pelo S3, incluindo a exclusão automática. max_size e extensions de uma regra só se aplicam aos uploads pela API REST.

Limites

Acima de um limite, o gateway responde SlowDown (HTTP 503), e os SDKs da AWS esperam e tentam novamente por conta própria. As requisições S3 não contam para o limite de requisições de API do seu plano. Confira o par de chaves antes de tentar novamente em loop: um IP que envia credenciais inválidas demais fica bloqueado por alguns minutos.

Tamanho da parte

As ferramentas multipart dividem arquivos grandes por conta própria; mantenha cada parte com 80 MB ou menos. Os padrões do AWS CLI (8 MB) e do rclone (5 MB) já se encaixam.
Gravar exige um plano pago. Sem ele, e no bucket legacy (somente leitura), as gravações respondem AccessDenied. A cota de armazenamento se aplica como na API REST.

Erros

O gateway responde com os erros XML padrão do S3, então os SDKs os tratam nativamente: