Skip to main content
Blob Storage parla l’API S3 su https://s3-blob.squarecloud.app. Funziona qualsiasi strumento che permetta di impostare un endpoint personalizzato: aws-cli, boto3, l’SDK AWS per JavaScript, rclone, Cyberduck e la maggior parte degli strumenti di backup.

Credenziali

Gli strumenti S3 firmano le richieste con una coppia di chiavi di accesso. Ottienila da S3 Credentials:
La coppia è derivata dalla tua chiave API. Non richiede una gestione separata: revocare o rigenerare la chiave ha lo stesso effetto sulla coppia, e la coppia ottiene gli stessi scope. Una chiave con solo blob:read produce una coppia di sola lettura. La coppia non cambia finché non cambia la chiave API, quindi recuperala una volta e conservala nel tuo secret manager o in una variabile d’ambiente. Non chiamare la route a ogni avvio: accetta 10 richieste all’ora.

Bucket

Il tuo account vede tre bucket fissi. Non puoi creare né eliminare bucket. Una chiave nel bucket public o private è il percorso dell’oggetto senza il tuo user id: images/logo.png nel bucket public corrisponde all’oggetto pub/<user_id>/images/logo.png sull’API REST. I file scritti tramite S3 compaiono sull’API REST e nella dashboard, e viceversa.

Configurazione

boto3 richiede signature_version="s3v4" per gli URL prefirmati: senza, generate_presigned_url firma con il vecchio SigV2, che il gateway non accetta. Gli URL prefirmati durano fino a 7 giorni (604800 secondi).
Le risposte del gateway non vengono mai messe in cache all’edge. Un URL prefirmato smette di funzionare esattamente quando scade, quando la chiave API viene revocata o quando l’oggetto viene eliminato.

Operazioni supportate

Bucket policy, CORS, lifecycle, website, crittografia, object lock, versioni, logging, notifiche, replica, scritture di ACL e tag, GET per partNumber e upload tramite form POST dal browser rispondono 501 NotImplemented. Usa le impostazioni dell’account per le regole di lifecycle.

Chiavi

  • Le chiavi sono percorsi letterali. Una chiave può avere fino a circa 1000 byte: il limite di 1024 byte conta anche il prefisso dell’account. Una chiave più lunga risponde KeyTooLongError, e il suo messaggio indica il numero esatto di byte a tua disposizione. I segmenti non possono essere vuoti, . o ...
  • Una chiave di 0 byte che termina con / è un marcatore di cartella, come le cartelle create dalla console AWS.
  • Il Content-Type servito è derivato dall’estensione, come sull’API REST. Gli eseguibili vengono rifiutati con InvalidArgument e .html, .svg e .xml vengono serviti come download.

Metadati, cache e scadenza

  • Gli header x-amz-meta-* vengono mantenuti su Pro ed Enterprise (fino a 5 chiavi e 512 byte, altrimenti MetadataTooLarge). Sugli altri piani vengono scartati.
  • Cache-Control e Content-Disposition vengono mantenuti. Un Cache-Control senza cache (no-cache, no-store o max-age=0) al di fuori di Enterprise viene rifiutato con AccessDenied.
  • Le regole per prefisso si applicano agli oggetti scritti tramite S3, compresa l’eliminazione automatica. max_size ed extensions di una regola si applicano solo agli upload REST.

Limiti

Oltre un limite il gateway risponde SlowDown (HTTP 503), e gli SDK AWS attendono e riprovano da soli. Le richieste S3 non contano nel limite di richieste API del tuo piano. Controlla la coppia di chiavi prima di riprovare in un ciclo: un IP che invia troppe credenziali non valide viene bloccato per qualche minuto.

Dimensione delle parti

Gli strumenti multipart dividono da soli i file grandi; mantieni ogni parte a 80 MB o meno. I valori predefiniti di AWS CLI (8 MB) e rclone (5 MB) vanno già bene.
La scrittura richiede un piano a pagamento. Senza piano, e sul bucket legacy di sola lettura, le scritture rispondono AccessDenied. La quota di storage si applica come sull’API REST.

Errori

Il gateway risponde con gli errori XML standard di S3, così gli SDK li gestiscono in modo nativo: