SquareCloudBlobError
Jeder API-Fehler wirft einen SquareCloudBlobError.
Was kein SquareCloudBlobError ist
- Netzwerkfehler werden nicht verpackt. Erhält eine Anfrage keine vollständige Antwort (DNS-Fehler, Verbindung zurückgesetzt, Body mitten im Lesen abgeschnitten), wird der ursprüngliche
fetch-Fehler unverändert geworfen, nach eventuellen Wiederholungen. - Dateifehler. In Node.js wirft ein
put()-Pfad, der sich nicht öffnen lässt, einen einfachenError(Cannot open file: <path>, ursprünglicher Fehler incause). Im Browser schlägt ein Pfad mit dem Fehler beim Import vonnode:fsfehl. - Ein fehlendes
@aws-sdk/client-s3.s3()wirft den Importfehler des Moduls.
UNKNOWN_ERROR
UNKNOWN_ERROR ist der einzige Code, den das SDK selbst erzeugt. Er wird verwendet, wenn die Antwort keinen Fehlercode hat: ein Body, der kein JSON ist (zum Beispiel die Fehlerseite eines Proxys), oder eine 2xx-Antwort ohne status: "success". status enthält weiterhin den echten HTTP-Status.
Fehler einzelner Objekte
Batch-Operationen melden Fehler in ihrem Ergebnis, statt zu werfen:update(): Jedes Ergebnis hatok: falseund einencode.delete([ids]): Fehlende Objekte landen innot_found, andere Fehler infailed.
Fehlercodes
BlobErrorCode ist die eigene Liste von Codes der Blob Storage API. Sie ist nicht dieselbe Liste wie die Fehlercodes der Haupt-API von Square Cloud. HTTP-Status und Bedeutung jedes Codes findest du in der Fehlerreferenz der Blob API.
Global
Global
ACCESS_DENIED, RATE_LIMITED, MISSING_SCOPE, RESOURCE_NOT_ALLOWED, UPLOAD_TOKEN_NOT_ALLOWED, UPLOAD_TOKEN_USED, PREFIX_NOT_ALLOWED, PERMISSION_DENIED, ACCOUNT_BLOCKED, UPGRADE_REQUIRED, STORAGE_QUOTA_EXCEEDED, PRIVATE_STORAGE_UNAVAILABLE, PUBLIC_STORAGE_UNAVAILABLE, TOO_MANY_CONCURRENT_UPLOADS, UPLOAD_FAILED, INTERNAL_SERVER_ERROR, NOT_FOUNDRATE_LIMIT ist veraltet: Der Dienst sendet ihn nicht mehr (siehe RATE_LIMITED), er bleibt aber im Typ.Objekte
Objekte
OBJECT_NOT_FOUND, OBJECT_ALREADY_EXISTS, OBJECT_IS_LEGACY, CHECKSUM_MISMATCH, INVALID_CONTENT_TYPE, FILE_TOO_LARGE, FILE_TOO_SMALL, BLOCKED_FILE_TYPE, INVALID_FILE_TYPE, FILE_TYPE_NOT_ALLOWED, NOTHING_TO_UPDATE, VISIBILITY_CHANGE_FAILED, UPDATE_FAILED, DELETE_FAILED, TOO_MANY_OBJECTS, SAME_OBJECT, INVALID_DESTINATION, COPY_FAILED, PREFIX_REQUIRED, INVALID_CONTINUATION_TOKENMultipart-Uploads (Chunked)
Multipart-Uploads (Chunked)
TOO_MANY_CONCURRENT_CHUNKS, TOO_MANY_OPEN_UPLOADS, INVALID_UPLOAD_TOKEN, UPLOAD_NOT_FOUND, NO_CHUNKS_UPLOADED, EMPTY_CHUNK, INVALID_CHUNK_PART, CHUNK_TOO_SMALL, CHUNK_TOO_LARGERegeln, Upload-Tokens, Freigaben und S3
Regeln, Upload-Tokens, Freigaben und S3
TOO_MANY_RULES, DUPLICATE_RULE_PREFIX, INVALID_RULES, UPLOAD_TOKEN_TOO_LARGE, TOO_MANY_SHARES, SHARE_NOT_FOUND, INVALID_SHARE, API_KEY_REQUIRED, LEGACY_API_KEYValidierung (400)
Validierung (400)
Jeder
INVALID_*-Code, etwa INVALID_OBJECT, INVALID_OBJECT_NAME oder INVALID_RULE_PREFIX. Regelfehler enthalten das betroffene prefix in error.extra.SDK
SDK
UNKNOWN_ERROR: Die Antwort hatte keinen Fehlercode (siehe oben).BlobErrorCode akzeptiert außerdem jeden anderen String, sodass ein Code, den der Dienst später hinzufügt, trotzdem die Typprüfung besteht.
Wiederholungsrichtlinie
Das SDK wiederholt nur, was sich gefahrlos wiederholen lässt:GET-Aufrufe und Teile von Multipart-Uploads (jede Teilnummer kann erneut gesendet werden).
Ein wiederholbarer Aufruf wird wiederholt bei:
- einem Netzwerkfehler (einschließlich eines mitten im Lesen abgeschnittenen Bodys);
- jeder
5xx-Antwort; TOO_MANY_CONCURRENT_CHUNKSbei einem Multipart-Teil: Der Server lehnt den Teil ab, bevor er ihn liest, daher wird er innerhalb desselben Budgets erneut gesendet.
4xx wiederholt, einschließlich 429. RATE_LIMITED kann eine Kontosperre sein, die etwa 30 Minuten dauert, daher überlässt das SDK die Entscheidung dir.
Backoff
Vor Wiederholungn (ab 0) wartet das SDK:
maxRetries: 2 macht ein Aufruf höchstens 3 Versuche.
Schreibvorgänge selbst wiederholen
Ein Schreibvorgang, der mit einem Netzwerkfehler oder einem5xx fehlschlägt, wurde möglicherweise angewendet, möglicherweise auch nicht. Wiederhole ihn nur, wenn das für dich gefahrlos ist, zum Beispiel ein put() auf denselben name mit overwrite: true.
Timeouts
Es gibt kein Client-Timeout und keine Möglichkeit, einen Aufruf abzubrechen: Eine Anfrage dauert so lange, wiefetch wartet.
