{"record":{"id":"880696a495745298","repo":"apache/dolphinscheduler","slug":"resource-aws-s3-bucket-name-is-blank","errorCode":null,"errorMessage":"resource.aws.s3.bucket.name is blank","messagePattern":"resource\\.aws\\.s3\\.bucket\\.name is blank","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-storage-plugin/dolphinscheduler-storage-s3/src/main/java/org/apache/dolphinscheduler/plugin/storage/s3/S3StorageOperator.java","lineNumber":211,"sourceCode":"\n    @SneakyThrows\n    @Override\n    public List<String> fetchFileContent(String filePath, int skipLineNums, int limit) {\n        filePath = transformAbsolutePathToS3Key(filePath);\n        S3Object s3Object = s3Client.getObject(bucketName, filePath);\n        try (\n                InputStreamReader inputStreamReader = new InputStreamReader(s3Object.getObjectContent());\n                BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {\n            return bufferedReader.lines()\n                    .skip(skipLineNums)\n                    .limit(limit)\n                    .collect(Collectors.toList());\n        }\n    }\n\n    void exceptionWhenBucketNameNotExists(String bucketName) {\n        if (StringUtils.isBlank(bucketName)) {\n            throw new IllegalArgumentException(\"resource.aws.s3.bucket.name is blank\");\n        }\n\n        boolean existsBucket = s3Client.doesBucketExistV2(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, the current regionName is {}\", bucketName,\n                s3Client.getRegionName());\n    }\n\n    @Override\n    public List<StorageEntity> listStorageEntity(String resourceAbsolutePath) {\n        final String s3ResourceAbsolutePath = transformAbsolutePathToS3Key(resourceAbsolutePath);\n        ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request()\n                .withBucketName(bucketName)\n                .withDelimiter(\"/\")","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-storage-plugin/dolphinscheduler-storage-s3/src/main/java/org/apache/dolphinscheduler/plugin/storage/s3/S3StorageOperator.java#L193-L229","documentation":"exceptionWhenBucketNameNotExists throws IllegalArgumentException when the configured S3 bucket name (resource.aws.s3.bucket.name) is blank/null. The operator cannot target any bucket without a name, so startup/configuration validation fails fast before any S3 call.","triggerScenarios":"Constructing S3StorageOperator (or calling exceptionWhenBucketNameNotExists) with an empty or whitespace-only bucket name, i.e. resource.aws.s3.bucket.name is unset or empty in common.properties.","commonSituations":"Fresh installs where the S3 resource storage section was left with defaults; environment-variable substitution failing so the value renders empty; users switching resource storage to S3 without editing the config.","solutions":["Set resource.aws.s3.bucket.name in common.properties to an existing bucket name","If injecting via env vars, verify the substitution produces a non-empty value","Restart/verify configuration loading after the change"],"exampleFix":"# before\nresource.aws.s3.bucket.name=\n# after\nresource.aws.s3.bucket.name=my-dolphinscheduler-bucket","handlingStrategy":"validation","validationCode":"String bucket = conf.get(\"resource.aws.s3.bucket.name\");\nif (bucket == null || bucket.trim().isEmpty()) {\n    throw new IllegalArgumentException(\"resource.aws.s3.bucket.name must be set before starting with S3 storage\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    storageOperator.init();\n} catch (IllegalArgumentException e) {\n    log.error(\"S3 configuration invalid: {}\", e.getMessage()); // fix common.properties\n}","preventionTips":["After enabling S3 resource storage, always set resource.aws.s3.bucket.name","Add a config preflight check at startup that fails fast on blank required keys","Beware env-var substitution leaving values empty; verify rendered config"],"tags":["s3","configuration","validation"],"backgroundTag":"missing-required-config-field","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}