{"record":{"id":"6db5b95463991a4a","repo":"cube-js/cube","slug":"unsupported-configuration-exportbucket-some-confi-6db5b9","errorCode":null,"errorMessage":"Unsupported configuration exportBucket, some configuration keys are empty: ${emptySecretKeys.join(',')}","messagePattern":"Unsupported configuration exportBucket, some configuration keys are empty: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cubejs-redshift-driver/src/RedshiftDriver.ts","lineNumber":383,"sourceCode":"        );\n      }\n\n      // Make sure the required keys are set\n      const emptyRequiredKeys = Object.keys(requiredExportBucket)\n        .filter((key: string) => requiredExportBucket[<keyof RedshiftDriverExportRequiredAWS>key] === undefined);\n      if (emptyRequiredKeys.length) {\n        throw new Error(\n          `Unsupported configuration exportBucket, some configuration keys are empty: ${emptyRequiredKeys.join(',')}`\n        );\n      }\n      // If unload ARN is not set, secret and key id must be set for Redshift\n      if (!exportBucket.unloadArn) {\n        // Make sure the required keys are set\n        const emptySecretKeys = Object.keys(exportBucket)\n          .filter((key: string) => key !== 'unloadArn')\n          .filter((key: string) => exportBucket[<keyof RedshiftDriverExportAWS>key] === undefined);\n        if (emptySecretKeys.length) {\n          throw new Error(\n            `Unsupported configuration exportBucket, some configuration keys are empty: ${emptySecretKeys.join(',')}`\n          );\n        }\n      }\n\n      return <RedshiftDriverExportAWS>exportBucket;\n    }\n\n    return undefined;\n  }\n\n  public async loadUserDefinedTypes(): Promise<void> {\n    // @todo Implement for Redshift, column \\\"typcategory\\\" does not exist in pg_type\n  }\n\n  public override async tableColumnTypes(table: string): Promise<TableStructure> {\n    const columns: TableStructure = await super.tableColumnTypes(table);\n","sourceCodeStart":365,"sourceCodeEnd":401,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-redshift-driver/src/RedshiftDriver.ts#L365-L401","documentation":"If exportBucket.unloadArn is not set, Redshift needs direct AWS credentials (keyId and secretKey) to authorize the UNLOAD. The driver checks every exportBucket key except unloadArn and throws listing any that are undefined.","triggerScenarios":"getExportBucket (via getInitialConfiguration) sees an exportBucket without unloadArn and at least one of keyId / secretKey / bucketType / bucketName undefined — e.g. only the ARN-adjacent fields were partially filled.","commonSituations":"User provides an unloadArn but it is empty-string or a typo'd env var name so it reads undefined; user switches from ARN-based to credential-based auth and forgets key/secret.","solutions":["Provide CUBEJS_EXPORT_BUCKET_AWS_KEY and CUBEJS_EXPORT_BUCKET_AWS_SECRET when not using an unload ARN","If intending ARN-based auth, correctly set CUBEJS_EXPORT_BUCKET_UNLOAD_ARN (a valid Redshift IAM role ARN)","Check for typos in env var names and that the vars are visible to the Cube process"],"exampleFix":"// before (intended ARN auth, arn typo'd)\nCUBEJS_EXPORT_BUCKET_UNLOADARN=arn:aws:iam::...\n// after\nCUBEJS_EXPORT_BUCKET_UNLOAD_ARN=arn:aws:iam::...","handlingStrategy":"validation","validationCode":"const eb = {\n  bucketType: process.env.CUBEJS_EXPORT_BUCKET_TYPE,\n  bucketName: process.env.CUBEJS_EXPORT_BUCKET_NAME,\n  keyId: process.env.CUBEJS_EXPORT_BUCKET_AWS_KEY,\n  secretKey: process.env.CUBEJS_EXPORT_BUCKET_AWS_SECRET,\n  unloadArn: process.env.CUBEJS_EXPORT_BUCKET_UNLOAD_ARN\n};\nif (!eb.unloadArn) {\n  const empty = Object.keys(eb).filter(k => k !== 'unloadArn' && !eb[k]);\n  if (empty.length) throw new Error(`exportBucket without unloadArn requires: ${empty.join(',')}`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Decide up front between ARN-based and credential-based unload auth and set the full set of vars","Double-check exact env var spellings (UNLOAD_ARN vs UNLOADARN)","Validate the exported env block of your deployment manifests"],"tags":["redshift","configuration","export-bucket","aws-credentials"],"backgroundTag":"missing-env-var","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}