{"record":{"id":"78ad2c2af906541e","repo":"FlowiseAI/Flowise","slug":"azure-blob-storage-configuration-is-missing-provi","errorCode":null,"errorMessage":"Azure Blob Storage configuration is missing. Provide AZURE_BLOB_STORAGE_CONNECTION_STRING or AZURE_BLOB_STORAGE_ACCOUNT_NAME + AZURE_BLOB_STORAGE_ACCOUNT_KEY","messagePattern":"Azure Blob Storage configuration is missing\\. Provide AZURE_BLOB_STORAGE_CONNECTION_STRING or AZURE_BLOB_STORAGE_ACCOUNT_NAME \\+ AZURE_BLOB_STORAGE_ACCOUNT_KEY","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/src/storage/AzureBlobStorageProvider.ts","lineNumber":58,"sourceCode":"        const connectionString = process.env.AZURE_BLOB_STORAGE_CONNECTION_STRING\n        const accountName = process.env.AZURE_BLOB_STORAGE_ACCOUNT_NAME\n        const accountKey = process.env.AZURE_BLOB_STORAGE_ACCOUNT_KEY\n        const containerName = process.env.AZURE_BLOB_STORAGE_CONTAINER_NAME\n\n        if (!containerName || containerName.trim() === '') {\n            throw new Error('AZURE_BLOB_STORAGE_CONTAINER_NAME env variable is required')\n        }\n\n        let blobServiceClient: BlobServiceClient\n\n        // Authenticate either using connection string or account name and key\n        if (connectionString && connectionString.trim() !== '') {\n            blobServiceClient = BlobServiceClient.fromConnectionString(connectionString)\n        } else if (accountName && accountName.trim() !== '' && accountKey && accountKey.trim() !== '') {\n            const sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey)\n            blobServiceClient = new BlobServiceClient(`https://${accountName}.blob.core.windows.net`, sharedKeyCredential)\n        } else {\n            throw new Error(\n                'Azure Blob Storage configuration is missing. Provide AZURE_BLOB_STORAGE_CONNECTION_STRING or AZURE_BLOB_STORAGE_ACCOUNT_NAME + AZURE_BLOB_STORAGE_ACCOUNT_KEY'\n            )\n        }\n\n        const containerClient = blobServiceClient.getContainerClient(containerName)\n        return { containerClient, containerName }\n    }\n\n    getStorageType(): string {\n        return 'azure'\n    }\n\n    getConfig(): any {\n        return {\n            containerName: this.containerName\n        }\n    }\n","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/src/storage/AzureBlobStorageProvider.ts#L40-L76","documentation":"Thrown by AzureBlobStorageProvider.initAzureConfig after the container-name check passes but no complete authentication credential set is present. The provider accepts either AZURE_BLOB_STORAGE_CONNECTION_STRING alone, or the pair AZURE_BLOB_STORAGE_ACCOUNT_NAME + AZURE_BLOB_STORAGE_ACCOUNT_KEY; anything else is rejected.","triggerScenarios":"Container name is set but neither the connection string nor the account-name+account-key pair is fully supplied (e.g. only the account name is set, or only the key). The fall-through at AzureBlobStorageProvider.ts:57 throws.","commonSituations":"Partially filling in Azure credentials; rotating keys and forgetting to update one of the two env vars; switching from connection-string auth to key auth without providing both name and key.","solutions":["Provide AZURE_BLOB_STORAGE_CONNECTION_STRING and rely on connection-string auth, OR","Provide both AZURE_BLOB_STORAGE_ACCOUNT_NAME and AZURE_BLOB_STORAGE_ACCOUNT_KEY.","Verify the credentials are valid against the storage account (e.g. with az CLI) before starting Flowise."],"exampleFix":"# before\nAZURE_BLOB_STORAGE_CONTAINER_NAME=flowise\nAZURE_BLOB_STORAGE_ACCOUNT_NAME=myaccount\n# after\nAZURE_BLOB_STORAGE_CONTAINER_NAME=flowise\nAZURE_BLOB_STORAGE_ACCOUNT_NAME=myaccount\nAZURE_BLOB_STORAGE_ACCOUNT_KEY=<base64-key>","handlingStrategy":"validation","validationCode":"function validateAzureAuth(): void {\n  const cs = process.env.AZURE_BLOB_STORAGE_CONNECTION_STRING\n  const name = process.env.AZURE_BLOB_STORAGE_ACCOUNT_NAME\n  const key = process.env.AZURE_BLOB_STORAGE_ACCOUNT_KEY\n  const hasConnStr = cs && cs.trim() !== ''\n  const hasPair = name && name.trim() !== '' && key && key.trim() !== ''\n  if (!hasConnStr && !hasPair) {\n    throw new Error('Azure auth incomplete: provide CONNECTION_STRING or ACCOUNT_NAME + ACCOUNT_KEY')\n  }\n}","typeGuard":"function hasAzureAuth(env: NodeJS.ProcessEnv): boolean {\n  const cs = env.AZURE_BLOB_STORAGE_CONNECTION_STRING\n  const name = env.AZURE_BLOB_STORAGE_ACCOUNT_NAME\n  const key = env.AZURE_BLOB_STORAGE_ACCOUNT_KEY\n  return (!!cs && cs.trim() !== '') || (!!name && !!key && name.trim() !== '' && key.trim() !== '')\n}","tryCatchPattern":null,"preventionTips":["Provide either the full connection string or both account name and key.","Use a secrets manager rather than partial .env entries.","Validate auth config at process startup."],"tags":["azure","storage","env","credentials","configuration"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}