{"record":{"id":"bdc5efebc07b218b","repo":"cube-js/cube","slug":"unsupported-configuration-exportbucket-some-confi-bdc5ef","errorCode":null,"errorMessage":"Unsupported configuration exportBucket, some configuration keys are empty: ${emptyRequiredKeys.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":372,"sourceCode":"    const exportBucket: Partial<RedshiftDriverExportAWS> = {\n      ...requiredExportBucket,\n      keyId: getEnv('dbExportBucketAwsKey', { dataSource, preAggregations }),\n      secretKey: getEnv('dbExportBucketAwsSecret', { dataSource, preAggregations }),\n      unloadArn: getEnv('redshiftUnloadArn', { dataSource, preAggregations }),\n    };\n\n    if (exportBucket.bucketType) {\n      if (!supportedBucketTypes.includes(exportBucket.bucketType)) {\n        throw new Error(\n          `Unsupported EXPORT_BUCKET_TYPE, supported: ${supportedBucketTypes.join(',')}`\n        );\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    }","sourceCodeStart":354,"sourceCodeEnd":390,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-redshift-driver/src/RedshiftDriver.ts#L354-L390","documentation":"When an exportBucket is configured, all required AWS keys (bucketType, bucketName, keyId, secretKey, etc. — those collected in requiredExportBucket) must be present. The driver throws listing the empty keys when any are undefined.","triggerScenarios":"getExportBucket (via getInitialConfiguration) finds requiredExportBucket entries that are undefined — i.e. one of CUBEJS_EXPORT_BUCKET_TYPE / CUBEJS_EXPORT_BUCKET_NAME / CUBEJS_EXPORT_BUCKET_AWS_KEY / CUBEJS_EXPORT_BUCKET_AWS_SECRET is unset while exportBucket config exists.","commonSituations":"Partially configured env: bucket name set but AWS key/secret missing; per-dataSource or per-preAggregation overrides silently not applied; keys supplied only in one deployment environment.","solutions":["Set all required env vars: CUBEJS_EXPORT_BUCKET_TYPE, CUBEJS_EXPORT_BUCKET_NAME, CUBEJS_EXPORT_BUCKET_AWS_KEY, CUBEJS_EXPORT_BUCKET_AWS_SECRET","Verify getEnv('dbExportBucketAwsKey'/'dbExportBucketAwsSecret', { dataSource, preAggregations }) overrides actually resolve for the relevant dataSource","Alternatively set exportBucket.unloadArn so only the ARN-based path is used (still requires the other required keys here)"],"exampleFix":"// before\nCUBEJS_EXPORT_BUCKET_TYPE=s3\nCUBEJS_EXPORT_BUCKET_NAME=my-bucket\n# AWS key/secret missing\n// after\nCUBEJS_EXPORT_BUCKET_TYPE=s3\nCUBEJS_EXPORT_BUCKET_NAME=my-bucket\nCUBEJS_EXPORT_BUCKET_AWS_KEY=AKIA...\nCUBEJS_EXPORT_BUCKET_AWS_SECRET=...","handlingStrategy":"validation","validationCode":"const required = ['CUBEJS_EXPORT_BUCKET_TYPE', 'CUBEJS_EXPORT_BUCKET_NAME', 'CUBEJS_EXPORT_BUCKET_AWS_KEY', 'CUBEJS_EXPORT_BUCKET_AWS_SECRET'];\nconst missing = required.filter(k => !process.env[k]);\nif (missing.length) throw new Error(`exportBucket missing env vars: ${missing.join(',')}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run an env-var completeness check in CI/CD before deploys","Keep a documented .env.example listing all export bucket vars","Configure all dataSources uniformly when using per-datasource overrides"],"tags":["redshift","configuration","export-bucket","missing-env-var"],"backgroundTag":"missing-env-var","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}