{"record":{"id":"59c9dc6bd96954c3","repo":"n8n-io/n8n","slug":"request-to-azure-blob-storage-failed-error-mess","errorCode":null,"errorMessage":"Request to Azure Blob storage failed: ${error.message}","messagePattern":"Request to Azure Blob storage failed: (.+?)","errorType":"exception","errorClass":"UnexpectedError","httpStatus":null,"severity":"error","filePath":"packages/@n8n/blob-storage/src/azure-blob/azure-blob.service.ee.ts","lineNumber":176,"sourceCode":"\t\t\tif (fileName) metadata.fileName = decodeURIComponent(fileName);\n\n\t\t\treturn metadata;\n\t\t} catch (e) {\n\t\t\tthis.handleError(e);\n\t\t}\n\t}\n\n\tasync delete(blobName: string) {\n\t\ttry {\n\t\t\tawait this.containerClient.getBlockBlobClient(blobName).deleteIfExists();\n\t\t} catch (e) {\n\t\t\tthis.handleError(e);\n\t\t}\n\t}\n\n\tprivate handleError(e: unknown): never {\n\t\tconst error = ensureError(e);\n\t\tthrow new UnexpectedError(`Request to Azure Blob storage failed: ${error.message}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n}\n","sourceCodeStart":158,"sourceCodeEnd":181,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/blob-storage/src/azure-blob/azure-blob.service.ee.ts#L158-L181","documentation":"UnexpectedError thrown by AzureBlobService.handleError, the catch-all for every Azure SDK error that is not specifically handled (e.g. non-404 in checkConnection, or any failure in put/get/getMetadata/delete). It wraps the original via ensureError and preserves it as cause. The original provider message is appended for diagnosis.","triggerScenarios":"Any Azure storage operation (put/get/getMetadata/delete, or checkConnection with a non-404 status) throws and falls through to handleError. Typical sources: 403 auth failure, network timeout, throttling (503), SDK serialization error, or a corrupted credential.","commonSituations":"Expired or rotated storage key / SAS; network firewall blocking blob.core.windows.net; Azure throttling under high load; accountKey / connectionString mismatch; clock skew breaking shared-key signing.","solutions":["Read the wrapped message — it includes the underlying Azure error text (auth, throttling, DNS, etc.).","For 403, rotate and re-set N8N_EXTERNAL_STORAGE_AZURE_ACCOUNT_KEY / connection string.","For timeouts/throttling, check network egress and Azure subscription limits.","Verify the n8n host clock is in sync (shared-key auth is time-sensitive)."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-flight connectivity check before relying on the service\nawait azureBlobService.init(); // surfaces auth/network issues at startup","typeGuard":"import { UnexpectedError } from 'n8n-workflow';\nconst isAzureFailure = (e: unknown): boolean =>\n  e instanceof UnexpectedError && /Request to Azure Blob storage failed/.test(e.message);","tryCatchPattern":"try {\n  await azureBlobService.put(blobName, body);\n} catch (e) {\n  if (e instanceof UnexpectedError && /Request to Azure Blob storage failed/.test(e.message)) {\n    const cause = (e as any).cause;\n    // classify cause.statusCode: 403 -> rotate key, 503 -> throttle/backoff\n  }\n  throw e;\n}","preventionTips":["Call init() at startup to catch auth/network issues early.","Rotate storage keys on a schedule and update env vars atomically.","Keep the n8n host clock synced (shared-key signing is time-sensitive)."],"tags":["azure","blob-storage","unexpected","sdk-error","catch-all"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}