{"record":{"id":"e36c441a3e5208ed","repo":"risingwavelabs/risingwave","slug":"oss-access-key-id-not-found-from-environment-varia","errorCode":null,"errorMessage":"OSS_ACCESS_KEY_ID not found from environment variables","messagePattern":"OSS_ACCESS_KEY_ID not found from environment variables","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/object_store/src/object/opendal_engine/oss.rs","lineNumber":40,"sourceCode":"use super::{MediaType, OpendalObjectStore, new_operator};\nuse crate::object::ObjectResult;\nuse crate::object::object_metrics::ObjectStoreMetrics;\n\nimpl OpendalObjectStore {\n    /// create opendal oss engine.\n    pub fn new_oss_engine(\n        bucket: String,\n        root: String,\n        config: Arc<ObjectStoreConfig>,\n        metrics: Arc<ObjectStoreMetrics>,\n    ) -> ObjectResult<Self> {\n        // Create oss backend builder.\n        let mut builder = Oss::default().bucket(&bucket).root(&root);\n\n        let endpoint = std::env::var(\"OSS_ENDPOINT\")\n            .unwrap_or_else(|_| panic!(\"OSS_ENDPOINT not found from environment variables\"));\n        let access_key_id = std::env::var(\"OSS_ACCESS_KEY_ID\")\n            .unwrap_or_else(|_| panic!(\"OSS_ACCESS_KEY_ID not found from environment variables\"));\n        let access_key_secret = std::env::var(\"OSS_ACCESS_KEY_SECRET\").unwrap_or_else(|_| {\n            panic!(\"OSS_ACCESS_KEY_SECRET not found from environment variables\")\n        });\n\n        builder = builder\n            .endpoint(&endpoint)\n            .access_key_id(&access_key_id)\n            .access_key_secret(&access_key_secret);\n\n        let op = new_operator(\n            &config,\n            Operator::new(builder)?.layer(LoggingLayer::default()),\n        );\n\n        Ok(Self {\n            op,\n            media_type: MediaType::Oss,\n            config,","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/object_store/src/object/opendal_engine/oss.rs#L22-L58","documentation":"new_oss_engine panics when OSS_ACCESS_KEY_ID is absent from the environment. The OSS builder needs the access key id for credentials, read after OSS_ENDPOINT. The panic aborts startup instead of surfacing a recoverable ObjectError.","triggerScenarios":"Calling new_oss_engine with OSS_ENDPOINT set but OSS_ACCESS_KEY_ID unset in the process environment.","commonSituations":"Partial credential setup: operator exports OSS_ENDPOINT and OSS_ACCESS_KEY_SECRET but forgets the key id; secrets mounted under a different variable name in k8s/docker.","solutions":["Export OSS_ACCESS_KEY_ID with the Aliyun access key id before starting the process.","Verify all three OSS variables (OSS_ENDPOINT, OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET) are present: env | grep OSS_.","Fix the secret manifest/unit file so the variable is injected with the exact name OSS_ACCESS_KEY_ID."],"exampleFix":"// before\nlet access_key_id = std::env::var(\"OSS_ACCESS_KEY_ID\")\n    .unwrap_or_else(|_| panic!(\"OSS_ACCESS_KEY_ID not found from environment variables\"));\n// after (shell)\nexport OSS_ACCESS_KEY_ID=LTAI5t...  # Aliyun access key id","handlingStrategy":"validation","validationCode":"for v in [\"OSS_ENDPOINT\", \"OSS_ACCESS_KEY_ID\", \"OSS_ACCESS_KEY_SECRET\"] {\n    assert!(!std::env::var(v).unwrap_or_default().is_empty(), \"{v} must be set\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set all three OSS_* variables together in one env file or secret bundle.","Use consistent secret names between the secrets manager and the pod spec.","Smoke-test with `env | grep OSS_` in CI before deploying OSS configs."],"tags":["object-store","oss","credentials","env","panic"],"backgroundTag":"missing-env-var","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}