{"record":{"id":"3621987b8ed903ca","repo":"apache/dolphinscheduler","slug":"bucketname-bucketname-is-not-exists-you-need-362198","errorCode":null,"errorMessage":"bucketName: ${bucketName} is not exists, you need to create them by yourself","messagePattern":"bucketName: (.+?) is not exists, you need to create them by yourself","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"critical","filePath":"dolphinscheduler-storage-plugin/dolphinscheduler-storage-obs/src/main/java/org/apache/dolphinscheduler/plugin/storage/obs/ObsStorageOperator.java","lineNumber":251,"sourceCode":"        return storageEntityList;\n    }\n\n    @Override\n    public StorageEntity getStorageEntity(String resourceAbsolutePath) {\n        resourceAbsolutePath = transformObsKeyToAbsolutePath(resourceAbsolutePath);\n\n        ObsObject object = obsClient.getObject(bucketName, resourceAbsolutePath);\n        return transformObsObjectToStorageEntity(object);\n    }\n\n    private void ensureBucketSuccessfullyCreated(String bucketName) {\n        if (StringUtils.isBlank(bucketName)) {\n            throw new IllegalArgumentException(\"resource.alibaba.cloud.obs.bucket.name is empty\");\n        }\n\n        boolean existsBucket = obsClient.headBucket(bucketName);\n        if (!existsBucket) {\n            throw new IllegalArgumentException(\n                    \"bucketName: \" + bucketName + \" is not exists, you need to create them by yourself\");\n        }\n\n        log.info(\"bucketName: {} has been found\", bucketName);\n    }\n\n    protected StorageEntity transformObsObjectToStorageEntity(ObsObject object) {\n        ObjectMetadata metadata = object.getMetadata();\n        String fileAbsolutePath = transformObsKeyToAbsolutePath(object.getObjectKey());\n        ResourceMetadata resourceMetaData = getResourceMetaData(fileAbsolutePath);\n        String fileExtension = com.google.common.io.Files.getFileExtension(resourceMetaData.getResourceAbsolutePath());\n\n        return StorageEntity.builder()\n                .fileName(new File(fileAbsolutePath).getName())\n                .fullName(fileAbsolutePath)\n                .pfullName(resourceMetaData.getResourceParentAbsolutePath())\n                .type(resourceMetaData.getResourceType())\n                .isDirectory(StringUtils.isEmpty(fileExtension))","sourceCodeStart":233,"sourceCodeEnd":269,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-storage-plugin/dolphinscheduler-storage-obs/src/main/java/org/apache/dolphinscheduler/plugin/storage/obs/ObsStorageOperator.java#L233-L269","documentation":"ObsStorageOperator.ensureBucketSuccessfullyCreated throws IllegalArgumentException when headBucket reports the configured bucket does not exist in the region/credentials in use. DolphinScheduler does not auto-create OBS buckets, so initialization fails.","triggerScenarios":"Initializing ObsStorageOperator with a bucket name that is not present under the configured endpoint/credentials — typo in name, wrong region endpoint, or bucket deleted.","commonSituations":"Bucket created in a different region than the configured endpoint; IAM user lacking obs:ListBucket/HeadBucket permission so headBucket returns false; bucket name typo; using a bucket from another cloud account.","solutions":["Create the bucket in the OBS console (or CLI) in the same region as the configured endpoint","Fix the bucket name / endpoint mismatch in the config","Grant the access key permission to head the bucket (ListBucket/HeadBucket)"],"exampleFix":"// before\nresource.alibaba.cloud.obs.bucket.name=my-bukcet  // typo\n// after\nresource.alibaba.cloud.obs.bucket.name=my-bucket","handlingStrategy":"validation","validationCode":"// Pre-flight with the AWS/OBS SDK before init:\nboolean ok = new ObsClient(ak, sk, endpoint).headBucket(bucketName);\nif (!ok) throw new IllegalStateException(\"Bucket \" + bucketName + \" does not exist at \" + endpoint);","typeGuard":null,"tryCatchPattern":"try {\n    storageOperator = new ObsStorageOperator(cfg);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"is not exists\")) {\n        throw new IllegalStateException(\"Create the bucket first: \" + e.getMessage(), e);\n    }\n    throw e;\n}","preventionTips":["Provision the bucket via IaC (Terraform/CLI) before deploying DolphinScheduler","Ensure bucket region matches the configured endpoint","Verify the access key has HeadBucket/ListBucket permissions"],"tags":["storage","obs","bucket-not-found","config"],"backgroundTag":"resource-not-found","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}