diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java
index fe47537..1855110 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3ClientUtils.java
@@ -66,8 +66,9 @@
     public static boolean isEmptyPrefix(S3Client s3Client, String bucket, String path) {
         ListObjectsV2Request.Builder listObjectsBuilder = ListObjectsV2Request.builder().bucket(bucket);
         listObjectsBuilder.prefix(toCloudPrefix(path));
+        List<S3Object> files = s3Client.listObjectsV2(listObjectsBuilder.build()).contents();
 
-        return s3Client.listObjectsV2(listObjectsBuilder.build()).contents().isEmpty();
+        return isEmptyFolder(files, path);
     }
 
     public static String encodeURI(String path) {
@@ -88,4 +89,16 @@
     private static String toCloudPrefix(String path) {
         return path.startsWith(File.separator) ? path.substring(1) : path;
     }
+
+    private static boolean isEmptyFolder(List<S3Object> files, String path) {
+        if (files.size() > 1) {
+            return false;
+        } else if (files.isEmpty()) {
+            return true;
+        }
+
+        S3Object s3Object = files.get(0);
+        String key = s3Object.key();
+        return s3Object.size() == 0 && key.charAt(key.length() - 1) == '/' && key.startsWith(path);
+    }
 }
