Package io.minio

Class MinioAsyncClient

java.lang.Object
io.minio.BaseS3Client
io.minio.MinioAsyncClient
All Implemented Interfaces:
AutoCloseable

public class MinioAsyncClient extends BaseS3Client
Simple Storage Service (aka S3) client to perform bucket and object operations asynchronously.

Bucket operations

  • Create, list and delete buckets.
  • Put, get and delete bucket lifecycle configuration.
  • Put, get and delete bucket policy configuration.
  • Put, get and delete bucket encryption configuration.
  • Put and get bucket default retention configuration.
  • Put and get bucket notification configuration.
  • Enable and disable bucket versioning.

Object operations

  • Put, get, delete and list objects.
  • Create objects by combining existing objects.
  • Put and get object retention and legal hold.
  • Filter object content by SQL statement.

If access/secret keys are provided, all S3 operation requests are signed using AWS Signature Version 4; else they are performed anonymously.

Examples on using this library are available here.

Use MinioAsyncClient.builder() to create S3 client.


 // Create client with anonymous access.
 MinioAsyncClient minioAsyncClient =
     MinioAsyncClient.builder().endpoint("https://play.min.io").build();

 // Create client with credentials.
 MinioAsyncClient minioAsyncClient =
     MinioAsyncClient.builder()
         .endpoint("https://play.min.io")
         .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
         .build();
 
  • Constructor Details

  • Method Details

    • builder

      public static MinioAsyncClient.Builder builder()
    • statObject

      Gets information of an object asynchronously.
      Example:
       // Get information of an object.
       CompletableFuture<StatObjectResponse> future =
           minioAsyncClient.statObject(
               StatObjectArgs.builder().bucket("my-bucketname").object("my-objectname").build());
      
       // Get information of SSE-C encrypted object.
       CompletableFuture<StatObjectResponse> future =
           minioAsyncClient.statObject(
               StatObjectArgs.builder()
                   .bucket("my-bucketname")
                   .object("my-objectname")
                   .ssec(ssec)
                   .build());
      
       // Get information of a versioned object.
       CompletableFuture<StatObjectResponse> future =
           minioAsyncClient.statObject(
               StatObjectArgs.builder()
                   .bucket("my-bucketname")
                   .object("my-objectname")
                   .versionId("version-id")
                   .build());
      
       // Get information of a SSE-C encrypted versioned object.
       CompletableFuture<StatObjectResponse> future =
           minioAsyncClient.statObject(
               StatObjectArgs.builder()
                   .bucket("my-bucketname")
                   .object("my-objectname")
                   .versionId("version-id")
                   .ssec(ssec)
                   .build());
       
      Parameters:
      args - StatObjectArgs object.
      Returns:
      CompletableFuture<StatObjectResponse> object.
      See Also:
    • getObject

      Gets data from offset to length of a SSE-C encrypted object asynchronously.
      Example:
       CompletableFuture<GetObjectResponse> future = minioAsyncClient.getObject(
           GetObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .offset(offset)
               .length(len)
               .ssec(ssec)
               .build()
       
      Parameters:
      args - Object of GetObjectArgs
      Returns:
      CompletableFuture<GetObjectResponse> object.
      See Also:
    • downloadObject

      public CompletableFuture<Void> downloadObject(DownloadObjectArgs args)
      Downloads data of a SSE-C encrypted object to file.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.downloadObject(
           DownloadObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .ssec(ssec)
               .filename("my-filename")
               .build());
       
      Parameters:
      args - Object of DownloadObjectArgs
      Returns:
      CompletableFuture<Void> object.
    • copyObject

      Creates an object by server-side copying data from another object.
      Example:
       // Create object "my-objectname" in bucket "my-bucketname" by copying from object
       // "my-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-objectname")
                       .build())
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" by copying from object
       // "my-source-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-source-objectname")
                       .build())
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" with SSE-KMS server-side
       // encryption by copying from object "my-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-objectname")
                       .build())
               .sse(sseKms) // Replace with actual key.
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" with SSE-S3 server-side
       // encryption by copying from object "my-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-objectname")
                       .build())
               .sse(sseS3) // Replace with actual key.
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" with SSE-C server-side encryption
       // by copying from object "my-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-objectname")
                       .build())
               .sse(ssec) // Replace with actual key.
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" by copying from SSE-C encrypted
       // object "my-source-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-source-objectname")
                       .ssec(ssec) // Replace with actual key.
                       .build())
               .build());
      
       // Create object "my-objectname" in bucket "my-bucketname" with custom headers conditionally
       // by copying from object "my-objectname" in bucket "my-source-bucketname".
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.copyObject(
           CopyObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .source(
                   SourceObject.builder()
                       .bucket("my-source-bucketname")
                       .object("my-objectname")
                       .matchETag(etag) // Replace with actual etag.
                       .build())
               .headers(headers) // Replace with actual headers.
               .build());
       
      Overrides:
      copyObject in class BaseS3Client
      Parameters:
      args - CopyObjectArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • calculatePartCount

      protected CompletableFuture<Integer> calculatePartCount(List<SourceObject> sources)
      Calculates part count for given list of SourceObject.
    • composeObject

      Creates an object by combining data from different source objects using server-side copy.
      Example:
       List<SourceObject> sourceObjectList = new ArrayList<SourceObject>();
      
       sourceObjectList.add(
          SourceObject.builder().bucket("my-job-bucket").object("my-objectname-part-one").build());
       sourceObjectList.add(
          SourceObject.builder().bucket("my-job-bucket").object("my-objectname-part-two").build());
       sourceObjectList.add(
          SourceObject.builder().bucket("my-job-bucket").object("my-objectname-part-three").build());
      
       // Create my-bucketname/my-objectname by combining source object list.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.composeObject(
          ComposeObjectArgs.builder()
              .bucket("my-bucketname")
              .object("my-objectname")
              .sources(sourceObjectList)
              .build());
      
       // Create my-bucketname/my-objectname with user metadata by combining source object
       // list.
       Map<String, String> userMetadata = new HashMap<>();
       userMetadata.put("My-Project", "Project One");
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.composeObject(
           ComposeObjectArgs.builder()
              .bucket("my-bucketname")
              .object("my-objectname")
              .sources(sourceObjectList)
              .userMetadata(userMetadata)
              .build());
      
       // Create my-bucketname/my-objectname with user metadata and server-side encryption
       // by combining source object list.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.composeObject(
         ComposeObjectArgs.builder()
              .bucket("my-bucketname")
              .object("my-objectname")
              .sources(sourceObjectList)
              .userMetadata(userMetadata)
              .ssec(sse)
              .build());
       
      Parameters:
      args - ComposeObjectArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • getPresignedObjectUrl

      public String getPresignedObjectUrl(GetPresignedObjectUrlArgs args) throws MinioException
      Gets presigned URL of an object for HTTP method, expiry time and custom request parameters.
      Example:
       // Get presigned URL string to delete 'my-objectname' in 'my-bucketname' and its life time
       // is one day.
       String url =
          minioAsyncClient.getPresignedObjectUrl(
              GetPresignedObjectUrlArgs.builder()
                  .method(Http.Method.DELETE)
                  .bucket("my-bucketname")
                  .object("my-objectname")
                  .expiry(24 * 60 * 60)
                  .build());
       System.out.println(url);
      
       // Get presigned URL string to upload 'my-objectname' in 'my-bucketname'
       // with response-content-type as application/json and life time as one day.
       Map<String, String> reqParams = new HashMap<String, String>();
       reqParams.put("response-content-type", "application/json");
      
       String url =
          minioAsyncClient.getPresignedObjectUrl(
              GetPresignedObjectUrlArgs.builder()
                  .method(Http.Method.PUT)
                  .bucket("my-bucketname")
                  .object("my-objectname")
                  .expiry(1, TimeUnit.DAYS)
                  .extraQueryParams(reqParams)
                  .build());
       System.out.println(url);
      
       // Get presigned URL string to download 'my-objectname' in 'my-bucketname' and its life time
       // is 2 hours.
       String url =
          minioAsyncClient.getPresignedObjectUrl(
              GetPresignedObjectUrlArgs.builder()
                  .method(Http.Method.GET)
                  .bucket("my-bucketname")
                  .object("my-objectname")
                  .expiry(2, TimeUnit.HOURS)
                  .build());
       System.out.println(url);
       
      Parameters:
      args - GetPresignedObjectUrlArgs object.
      Returns:
      String - URL string.
      Throws:
      MinioException - thrown to indicate SDK exception.
    • getPresignedPostFormData

      public Map<String,String> getPresignedPostFormData(PostPolicy policy) throws MinioException
      Gets form-data of PostPolicy of an object to upload its data using POST method.
      Example:
       // Create new post policy for 'my-bucketname' with 7 days expiry from now.
       PostPolicy policy = new PostPolicy("my-bucketname", ZonedDateTime.now().plusDays(7));
      
       // Add condition that 'key' (object name) equals to 'my-objectname'.
       policy.addEqualsCondition("key", "my-objectname");
      
       // Add condition that 'Content-Type' starts with 'image/'.
       policy.addStartsWithCondition("Content-Type", "image/");
      
       // Add condition that 'content-length-range' is between 64kiB to 10MiB.
       policy.addContentLengthRangeCondition(64 * 1024, 10 * 1024 * 1024);
      
       Map<String, String> formData = minioAsyncClient.getPresignedPostFormData(policy);
      
       // Upload an image using POST object with form-data.
       MultipartBody.Builder multipartBuilder = new MultipartBody.Builder();
       multipartBuilder.setType(MultipartBody.FORM);
       for (Map.Entry<String, String> entry : formData.entrySet()) {
         multipartBuilder.addFormDataPart(entry.getKey(), entry.getValue());
       }
       multipartBuilder.addFormDataPart("key", "my-objectname");
       multipartBuilder.addFormDataPart("Content-Type", "image/png");
      
       // "file" must be added at last.
       multipartBuilder.addFormDataPart(
           "file", "my-objectname", RequestBody.create(new File("Pictures/avatar.png"), null));
      
       Request request =
           new Request.Builder()
               .url("https://play.min.io/my-bucketname")
               .post(multipartBuilder.build())
               .build();
       OkHttpClient httpClient = new OkHttpClient().newBuilder().build();
       Response response = httpClient.newCall(request).execute();
       if (response.isSuccessful()) {
         System.out.println("Pictures/avatar.png is uploaded successfully using POST object");
       } else {
         System.out.println("Failed to upload Pictures/avatar.png");
       }
       
      Parameters:
      policy - Post policy of an object.
      Returns:
      Map<String, String> - Contains form-data to upload an object using POST method.
      Throws:
      MinioException - thrown to indicate SDK exception.
      See Also:
    • removeObject

      public CompletableFuture<Void> removeObject(RemoveObjectArgs args)
      Removes an object.
      Example:
       // Remove object.
       CompletableFuture<Void> future = minioAsyncClient.removeObject(
           RemoveObjectArgs.builder().bucket("my-bucketname").object("my-objectname").build());
      
       // Remove versioned object.
       CompletableFuture<Void> future = minioAsyncClient.removeObject(
           RemoveObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-versioned-objectname")
               .versionId("my-versionid")
               .build());
      
       // Remove versioned object bypassing Governance mode.
       CompletableFuture<Void> future = minioAsyncClient.removeObject(
           RemoveObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-versioned-objectname")
               .versionId("my-versionid")
               .bypassRetentionMode(true)
               .build());
       
      Parameters:
      args - RemoveObjectArgs object.
      Returns:
      CompletableFuture<Void> object.
    • removeObjects

      public Iterable<Result<DeleteResult.Error>> removeObjects(RemoveObjectsArgs args)
      Removes multiple objects lazily. Its required to iterate the returned Iterable to perform removal.
      Example:
       List<DeleteObject> objects = new ArrayList<>();
       objects.add(new DeleteObject("my-objectname1"));
       objects.add(new DeleteObject("my-objectname2"));
       objects.add(new DeleteObject("my-objectname3"));
       Iterable<Result<DeleteResult.Error>> results =
           minioAsyncClient.removeObjects(
               RemoveObjectsArgs.builder().bucket("my-bucketname").objects(objects).build());
       for (Result<DeleteResult.Error> result : results) {
         DeleteResult.Error error = result.get();
         System.out.println(
             "Error in deleting object " + error.objectName() + "; " + error.message());
       }
       
      Parameters:
      args - RemoveObjectsArgs object.
      Returns:
      Iterable<Result<DeleteResult.Error>> - Lazy iterator contains object removal status.
    • restoreObject

      public CompletableFuture<Void> restoreObject(RestoreObjectArgs args)
      Restores an object asynchronously.
      Example:
       // Restore object.
       CompletableFuture<Void> future = minioAsyncClient.restoreObject(
           RestoreObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .request(new RestoreRequest(null, null, null, null, null, null))
               .build());
      
       // Restore versioned object.
       CompletableFuture<Void> future = minioAsyncClient.restoreObject(
           RestoreObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-versioned-objectname")
               .versionId("my-versionid")
               .request(new RestoreRequest(null, null, null, null, null, null))
               .build());
       
      Parameters:
      args - RestoreObjectArgs object.
      Returns:
      CompletableFuture<Void> object.
    • listObjects

      public Iterable<Result<Item>> listObjects(ListObjectsArgs args)
      Lists objects information optionally with versions of a bucket. Supports both the versions 1 and 2 of the S3 API. By default, the version 2 API is used.
      Version 1 can be used by passing the optional argument useVersion1 as true.
      Example:
       // Lists objects information.
       Iterable<Result<Item>> results = minioAsyncClient.listObjects(
           ListObjectsArgs.builder().bucket("my-bucketname").build());
      
       // Lists objects information recursively.
       Iterable<Result<Item>> results = minioAsyncClient.listObjects(
           ListObjectsArgs.builder().bucket("my-bucketname").recursive(true).build());
      
       // Lists maximum 100 objects information whose names starts with 'E' and after
       // 'ExampleGuide.pdf'.
       Iterable<Result<Item>> results = minioAsyncClient.listObjects(
           ListObjectsArgs.builder()
               .bucket("my-bucketname")
               .startAfter("ExampleGuide.pdf")
               .prefix("E")
               .maxKeys(100)
               .build());
      
       // Lists maximum 100 objects information with version whose names starts with 'E' and after
       // 'ExampleGuide.pdf'.
       Iterable<Result<Item>> results = minioAsyncClient.listObjects(
           ListObjectsArgs.builder()
               .bucket("my-bucketname")
               .startAfter("ExampleGuide.pdf")
               .prefix("E")
               .maxKeys(100)
               .includeVersions(true)
               .build());
       
      Parameters:
      args - Instance of ListObjectsArgs built using the builder
      Returns:
      Iterable<Result<Item>> - Lazy iterator contains object information.
    • listBuckets

      Lists bucket information of all buckets.
      Example:
       CompletableFuture<List<ListAllMyBucketsResult.Bucket>> future = minioAsyncClient.listBuckets();
       
      Returns:
      CompletableFuture<List<ListAllMyBucketsResult.Bucket>> object.
    • listBuckets

      Lists bucket information of all buckets.
      Example:
       Iterable<Result<ListAllMyBucketsResult.Bucket>> results = minioAsyncClient.listBuckets(ListBucketsArgs.builder().build());
       for (Result<ListAllMyBucketsResult.Bucket> result : results) {
         Bucket bucket = result.get();
         System.out.println(String.format("Bucket: %s, Region: %s, CreationDate: %s", bucket.name(), bucket.bucketRegion(), bucket.creationDate()));
       }
       
      Returns:
      Iterable<List<ListAllMyBucketsResult.Bucket>> object.
    • bucketExists

      public CompletableFuture<Boolean> bucketExists(BucketExistsArgs args)
      Checks if a bucket exists.
      Example:
       CompletableFuture<Boolean> future =
            minioAsyncClient.bucketExists(BucketExistsArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - BucketExistsArgs object.
      Returns:
      CompletableFuture<Boolean> object.
    • makeBucket

      Creates a bucket with region and object lock.
      Example:
       // Create bucket with default region.
       CompletableFuture<Void> future = minioAsyncClient.makeBucket(
           MakeBucketArgs.builder()
               .bucket("my-bucketname")
               .build());
      
       // Create bucket with specific region.
       CompletableFuture<Void> future = minioAsyncClient.makeBucket(
           MakeBucketArgs.builder()
               .bucket("my-bucketname")
               .region("us-west-1")
               .build());
      
       // Create object-lock enabled bucket with specific region.
       CompletableFuture<Void> future = minioAsyncClient.makeBucket(
           MakeBucketArgs.builder()
               .bucket("my-bucketname")
               .region("us-west-1")
               .objectLock(true)
               .build());
       
      Parameters:
      args - Object with bucket name, region and lock functionality
      Returns:
      CompletableFuture<GenericResponse> object.
    • setBucketVersioning

      public CompletableFuture<Void> setBucketVersioning(SetBucketVersioningArgs args)
      Sets versioning configuration of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.setBucketVersioning(
           SetBucketVersioningArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketVersioningArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketVersioning

      Gets versioning configuration of a bucket.
      Example:
       CompletableFuture<VersioningConfiguration> future =
           minioAsyncClient.getBucketVersioning(
               GetBucketVersioningArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketVersioningArgs object.
      Returns:
      CompletableFuture<VersioningConfiguration> object.
    • setObjectLockConfiguration

      public CompletableFuture<Void> setObjectLockConfiguration(SetObjectLockConfigurationArgs args)
      Sets default object retention in a bucket.
      Example:
       ObjectLockConfiguration config = new ObjectLockConfiguration(
           RetentionMode.COMPLIANCE, new RetentionDurationDays(100));
       CompletableFuture<Void> future = minioAsyncClient.setObjectLockConfiguration(
           SetObjectLockConfigurationArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetObjectLockConfigurationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteObjectLockConfiguration

      public CompletableFuture<Void> deleteObjectLockConfiguration(DeleteObjectLockConfigurationArgs args)
      Deletes default object retention in a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteObjectLockConfiguration(
           DeleteObjectLockConfigurationArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteObjectLockConfigurationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getObjectLockConfiguration

      Gets default object retention in a bucket.
      Example:
       CompletableFuture<ObjectLockConfiguration> future =
           minioAsyncClient.getObjectLockConfiguration(
               GetObjectLockConfigurationArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetObjectLockConfigurationArgs object.
      Returns:
      CompletableFuture<ObjectLockConfiguration> object.
    • setObjectRetention

      public CompletableFuture<Void> setObjectRetention(SetObjectRetentionArgs args)
      Sets retention configuration to an object.
      Example:
        Retention retention = new Retention(
             RetentionMode.COMPLIANCE, ZonedDateTime.now().plusYears(1));
        CompletableFuture<Void> future = minioAsyncClient.setObjectRetention(
            SetObjectRetentionArgs.builder()
                .bucket("my-bucketname")
                .object("my-objectname")
                .config(config)
                .bypassGovernanceMode(true)
                .build());
       
      Parameters:
      args - SetObjectRetentionArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getObjectRetention

      public CompletableFuture<Retention> getObjectRetention(GetObjectRetentionArgs args)
      Gets retention configuration of an object.
      Example:
       CompletableFuture<Retention> future =
           minioAsyncClient.getObjectRetention(GetObjectRetentionArgs.builder()
              .bucket(bucketName)
              .object(objectName)
              .versionId(versionId)
              .build());
       
      Parameters:
      args - GetObjectRetentionArgs object.
      Returns:
      CompletableFuture<Retention> object.
    • enableObjectLegalHold

      public CompletableFuture<Void> enableObjectLegalHold(EnableObjectLegalHoldArgs args)
      Enables legal hold on an object.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.enableObjectLegalHold(
          EnableObjectLegalHoldArgs.builder()
              .bucket("my-bucketname")
              .object("my-objectname")
              .versionId("object-versionId")
              .build());
       
      Parameters:
      args - EnableObjectLegalHoldArgs object.
      Returns:
      CompletableFuture<Void> object.
    • disableObjectLegalHold

      public CompletableFuture<Void> disableObjectLegalHold(DisableObjectLegalHoldArgs args)
      Disables legal hold on an object.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.disableObjectLegalHold(
          DisableObjectLegalHoldArgs.builder()
              .bucket("my-bucketname")
              .object("my-objectname")
              .versionId("object-versionId")
              .build());
       
      Parameters:
      args - DisableObjectLegalHoldArgs object.
      Returns:
      CompletableFuture<Void> object.
    • isObjectLegalHoldEnabled

      public CompletableFuture<Boolean> isObjectLegalHoldEnabled(IsObjectLegalHoldEnabledArgs args)
      Returns true if legal hold is enabled on an object.
      Example:
       CompletableFuture<Boolean> future =
           s3Client.isObjectLegalHoldEnabled(
              IsObjectLegalHoldEnabledArgs.builder()
                   .bucket("my-bucketname")
                   .object("my-objectname")
                   .versionId("object-versionId")
                   .build());
       
      Parameters:
      args - IsObjectLegalHoldEnabledArgs object.
      Returns:
      CompletableFuture<Boolean> object.
    • removeBucket

      public CompletableFuture<Void> removeBucket(RemoveBucketArgs args)
      Removes an empty bucket using arguments
      Example:
       CompletableFuture<Void> future =
           minioAsyncClient.removeBucket(RemoveBucketArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - RemoveBucketArgs bucket.
      Returns:
      CompletableFuture<Void> object.
    • putObject

      Uploads data from a stream to an object.
      Example:
       // Upload known sized input stream.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.putObject(
           PutObjectArgs.builder().bucket("my-bucketname").object("my-objectname").stream(
                   inputStream, size, -1)
               .contentType("video/mp4")
               .build());
      
       // Upload unknown sized input stream.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.putObject(
           PutObjectArgs.builder().bucket("my-bucketname").object("my-objectname").stream(
                   inputStream, -1, 10485760)
               .contentType("video/mp4")
               .build());
      
       // Create object ends with '/' (also called as folder or directory).
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.putObject(
           PutObjectArgs.builder().bucket("my-bucketname").object("path/to/").stream(
                   new ByteArrayInputStream(new byte[] {}), 0, -1)
               .build());
      
       // Upload input stream with headers and user metadata.
       Map<String, String> headers = new HashMap<>();
       headers.put("X-Amz-Storage-Class", "REDUCED_REDUNDANCY");
       Map<String, String> userMetadata = new HashMap<>();
       userMetadata.put("My-Project", "Project One");
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.putObject(
           PutObjectArgs.builder().bucket("my-bucketname").object("my-objectname").stream(
                   inputStream, size, -1)
               .headers(headers)
               .userMetadata(userMetadata)
               .build());
      
       // Upload input stream with server-side encryption.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.putObject(
           PutObjectArgs.builder().bucket("my-bucketname").object("my-objectname").stream(
                   inputStream, size, -1)
               .sse(sse)
               .build());
       
      Parameters:
      args - PutObjectArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • uploadObject

      Uploads data from a file to an object.
      Example:
       // Upload an JSON file.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.uploadObject(
           UploadObjectArgs.builder()
               .bucket("my-bucketname").object("my-objectname").filename("person.json").build());
      
       // Upload a video file.
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.uploadObject(
           UploadObjectArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .filename("my-video.avi")
               .contentType("video/mp4")
               .build());
       
      Parameters:
      args - UploadObjectArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • getBucketPolicy

      public CompletableFuture<String> getBucketPolicy(GetBucketPolicyArgs args)
      Gets bucket policy configuration of a bucket.
      Example:
       CompletableFuture<String> future =
           minioAsyncClient.getBucketPolicy(
               GetBucketPolicyArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketPolicyArgs object.
      Returns:
      CompletableFuture<String> object.
    • setBucketPolicy

      public CompletableFuture<Void> setBucketPolicy(SetBucketPolicyArgs args)
      Sets bucket policy configuration to a bucket.
      Example:
       // Assume policyJson contains below JSON string;
       // {
       //     "Statement": [
       //         {
       //             "Action": [
       //                 "s3:GetBucketLocation",
       //                 "s3:ListBucket"
       //             ],
       //             "Effect": "Allow",
       //             "Principal": "*",
       //             "Resource": "arn:aws:s3:::my-bucketname"
       //         },
       //         {
       //             "Action": "s3:GetObject",
       //             "Effect": "Allow",
       //             "Principal": "*",
       //             "Resource": "arn:aws:s3:::my-bucketname/myobject*"
       //         }
       //     ],
       //     "Version": "2012-10-17"
       // }
       //
       CompletableFuture<Void> future = minioAsyncClient.setBucketPolicy(
           SetBucketPolicyArgs.builder().bucket("my-bucketname").config(policyJson).build());
       
      Parameters:
      args - SetBucketPolicyArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketPolicy

      public CompletableFuture<Void> deleteBucketPolicy(DeleteBucketPolicyArgs args)
      Deletes bucket policy configuration to a bucket.
      Example:
       CompletableFuture<Void> future =
           minioAsyncClient.deleteBucketPolicy(
               DeleteBucketPolicyArgs.builder().bucket("my-bucketname"));
       
      Parameters:
      args - DeleteBucketPolicyArgs object.
      Returns:
      CompletableFuture<Void> object.
    • setBucketLifecycle

      public CompletableFuture<Void> setBucketLifecycle(SetBucketLifecycleArgs args)
      Sets lifecycle configuration to a bucket.
      Example:
       List<LifecycleRule> rules = new ArrayList<>();
       rules.add(
           new LifecycleRule(
               Status.ENABLED,
               null,
               new Expiration((ZonedDateTime) null, 365, null),
               new RuleFilter("logs/"),
               "rule2",
               null,
               null,
               null));
       LifecycleConfiguration config = new LifecycleConfiguration(rules);
       CompletableFuture<Void> future = minioAsyncClient.setBucketLifecycle(
           SetBucketLifecycleArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketLifecycleArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketLifecycle

      public CompletableFuture<Void> deleteBucketLifecycle(DeleteBucketLifecycleArgs args)
      Deletes lifecycle configuration of a bucket.
      Example:
       CompletableFuture<Void> future = deleteBucketLifecycle(
           DeleteBucketLifecycleArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteBucketLifecycleArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketLifecycle

      Gets lifecycle configuration of a bucket.
      Example:
       CompletableFuture<LifecycleConfiguration> future =
           minioAsyncClient.getBucketLifecycle(
               GetBucketLifecycleArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketLifecycleArgs object.
      Returns:
      LifecycleConfiguration object.
    • getBucketNotification

      Gets notification configuration of a bucket.
      Example:
       CompletableFuture<NotificationConfiguration> future =
           minioAsyncClient.getBucketNotification(
               GetBucketNotificationArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketNotificationArgs object.
      Returns:
      CompletableFuture<NotificationConfiguration> object.
    • setBucketNotification

      public CompletableFuture<Void> setBucketNotification(SetBucketNotificationArgs args)
      Sets notification configuration to a bucket.
      Example:
       List<EventType> eventList = new ArrayList<>();
       eventList.add(EventType.OBJECT_CREATED_PUT);
       eventList.add(EventType.OBJECT_CREATED_COPY);
      
       QueueConfiguration queueConfiguration = new QueueConfiguration();
       queueConfiguration.setQueue("arn:minio:sqs::1:webhook");
       queueConfiguration.setEvents(eventList);
       queueConfiguration.setPrefixRule("images");
       queueConfiguration.setSuffixRule("pg");
      
       List<QueueConfiguration> queueConfigurationList = new ArrayList<>();
       queueConfigurationList.add(queueConfiguration);
      
       NotificationConfiguration config = new NotificationConfiguration();
       config.setQueueConfigurationList(queueConfigurationList);
      
       CompletableFuture<Void> future = minioAsyncClient.setBucketNotification(
           SetBucketNotificationArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketNotificationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketNotification

      public CompletableFuture<Void> deleteBucketNotification(DeleteBucketNotificationArgs args)
      Deletes notification configuration of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteBucketNotification(
           DeleteBucketNotificationArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteBucketNotificationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketReplication

      Gets bucket replication configuration of a bucket.
      Example:
       CompletableFuture<ReplicationConfiguration> future =
           minioAsyncClient.getBucketReplication(
               GetBucketReplicationArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketReplicationArgs object.
      Returns:
      CompletableFuture<ReplicationConfiguration> object.
    • setBucketReplication

      public CompletableFuture<Void> setBucketReplication(SetBucketReplicationArgs args)
      Sets bucket replication configuration to a bucket.
      Example:
       Map<String, String> tags = new HashMap<>();
       tags.put("key1", "value1");
       tags.put("key2", "value2");
      
       ReplicationRule rule =
           new ReplicationRule(
               new DeleteMarkerReplication(Status.DISABLED),
               new ReplicationDestination(
                   null, null, "REPLACE-WITH-ACTUAL-DESTINATION-BUCKET-ARN", null, null, null, null),
               null,
               new RuleFilter(new AndOperator("TaxDocs", tags)),
               "rule1",
               null,
               1,
               null,
               Status.ENABLED);
      
       List<ReplicationRule> rules = new ArrayList<>();
       rules.add(rule);
      
       ReplicationConfiguration config =
           new ReplicationConfiguration("REPLACE-WITH-ACTUAL-ROLE", rules);
      
       CompletableFuture<Void> future = minioAsyncClient.setBucketReplication(
           SetBucketReplicationArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketReplicationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketReplication

      public CompletableFuture<Void> deleteBucketReplication(DeleteBucketReplicationArgs args)
      Deletes bucket replication configuration from a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteBucketReplication(
           DeleteBucketReplicationArgs.builder().bucket("my-bucketname"));
       
      Parameters:
      args - DeleteBucketReplicationArgs object.
      Returns:
      CompletableFuture<Void> object.
    • listenBucketNotification

      Listens events of object prefix and suffix of a bucket. The returned closable iterator is lazily evaluated hence its required to iterate to get new records and must be used with try-with-resource to release underneath network resources.
      Example:
       String[] events = {"s3:ObjectCreated:*", "s3:ObjectAccessed:*"};
       try (CloseableIterator<Result<NotificationRecords>> ci =
           minioAsyncClient.listenBucketNotification(
               ListenBucketNotificationArgs.builder()
                   .bucket("bucketName")
                   .prefix("")
                   .suffix("")
                   .events(events)
                   .build())) {
         while (ci.hasNext()) {
           NotificationRecords records = ci.next().get();
           for (Event event : records.events()) {
             System.out.println("Event " + event.eventType() + " occurred at "
                 + event.eventTime() + " for " + event.bucketName() + "/"
                 + event.objectName());
           }
         }
       }
       
      Parameters:
      args - ListenBucketNotificationArgs object.
      Returns:
      CloseableIterator<Result<NotificationRecords>> - Lazy closable iterator contains event records.
      Throws:
      MinioException - thrown to indicate SDK exception.
    • selectObjectContent

      public SelectResponseStream selectObjectContent(SelectObjectContentArgs args) throws MinioException
      Selects content of an object by SQL expression.
      Example:
       String sqlExpression = "select * from S3Object";
       InputSerialization is =
           new InputSerialization(null, false, null, null, FileHeaderInfo.USE, null, null,
               null);
       OutputSerialization os =
           new OutputSerialization(null, null, null, QuoteFields.ASNEEDED, null);
       SelectResponseStream stream =
           minioAsyncClient.selectObjectContent(
             SelectObjectContentArgs.builder()
             .bucket("my-bucketname")
             .object("my-objectname")
             .sqlExpression(sqlExpression)
             .inputSerialization(is)
             .outputSerialization(os)
             .requestProgress(true)
             .build());
      
       byte[] buf = new byte[512];
       int bytesRead = stream.read(buf, 0, buf.length);
       System.out.println(new String(buf, 0, bytesRead, StandardCharsets.UTF_8));
      
       Stats stats = stream.stats();
       System.out.println("bytes scanned: " + stats.bytesScanned());
       System.out.println("bytes processed: " + stats.bytesProcessed());
       System.out.println("bytes returned: " + stats.bytesReturned());
      
       stream.close();
       
      Parameters:
      args - instance of SelectObjectContentArgs
      Returns:
      SelectResponseStream - Contains filtered records and progress.
      Throws:
      MinioException - thrown to indicate SDK exception.
    • setBucketEncryption

      public CompletableFuture<Void> setBucketEncryption(SetBucketEncryptionArgs args)
      Sets encryption configuration of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.setBucketEncryption(
           SetBucketEncryptionArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketEncryptionArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketEncryption

      public CompletableFuture<SseConfiguration> getBucketEncryption(GetBucketEncryptionArgs args)
      Gets encryption configuration of a bucket.
      Example:
       CompletableFuture<SseConfiguration> future =
           minioAsyncClient.getBucketEncryption(
               GetBucketEncryptionArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketEncryptionArgs object.
      Returns:
      CompletableFuture<SseConfiguration> object.
    • deleteBucketEncryption

      public CompletableFuture<Void> deleteBucketEncryption(DeleteBucketEncryptionArgs args)
      Deletes encryption configuration of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteBucketEncryption(
           DeleteBucketEncryptionArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteBucketEncryptionArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketTags

      public CompletableFuture<Tags> getBucketTags(GetBucketTagsArgs args)
      Gets tags of a bucket.
      Example:
       CompletableFuture<Tags> future =
           minioAsyncClient.getBucketTags(GetBucketTagsArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketTagsArgs object.
      Returns:
      CompletableFuture<Tags> object.
    • setBucketTags

      public CompletableFuture<Void> setBucketTags(SetBucketTagsArgs args)
      Sets tags to a bucket.
      Example:
       Map<String, String> map = new HashMap<>();
       map.put("Project", "Project One");
       map.put("User", "jsmith");
       CompletableFuture<Void> future = minioAsyncClient.setBucketTags(
           SetBucketTagsArgs.builder().bucket("my-bucketname").tags(map).build());
       
      Parameters:
      args - SetBucketTagsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketTags

      public CompletableFuture<Void> deleteBucketTags(DeleteBucketTagsArgs args)
      Deletes tags of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteBucketTags(
           DeleteBucketTagsArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteBucketTagsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getObjectTags

      public CompletableFuture<Tags> getObjectTags(GetObjectTagsArgs args)
      Gets tags of an object.
      Example:
       CompletableFuture<Tags> future =
           minioAsyncClient.getObjectTags(
               GetObjectTagsArgs.builder().bucket("my-bucketname").object("my-objectname").build());
       
      Parameters:
      args - GetObjectTagsArgs object.
      Returns:
      CompletableFuture<Tags> object.
    • setObjectTags

      public CompletableFuture<Void> setObjectTags(SetObjectTagsArgs args)
      Sets tags to an object.
      Example:
       Map<String, String> map = new HashMap<>();
       map.put("Project", "Project One");
       map.put("User", "jsmith");
       CompletableFuture<Void> future = minioAsyncClient.setObjectTags(
           SetObjectTagsArgs.builder()
               .bucket("my-bucketname")
               .object("my-objectname")
               .tags((map)
               .build());
       
      Parameters:
      args - SetObjectTagsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteObjectTags

      public CompletableFuture<Void> deleteObjectTags(DeleteObjectTagsArgs args)
      Deletes tags of an object.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteObjectTags(
           DeleteObjectTags.builder().bucket("my-bucketname").object("my-objectname").build());
       
      Parameters:
      args - DeleteObjectTagsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getBucketCors

      Gets CORS configuration of a bucket.
      Example:
       CompletableFuture<CORSConfiguration> future =
           minioAsyncClient.getBucketCors(GetBucketCorsArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - GetBucketCorsArgs object.
      Returns:
      CompletableFuture<CORSConfiguration> object.
    • setBucketCors

      public CompletableFuture<Void> setBucketCors(SetBucketCorsArgs args)
      Sets CORS configuration to a bucket.
      Example:
       CORSConfiguration config =
           new CORSConfiguration(
               Arrays.asList(
                   new CORSConfiguration.CORSRule[] {
                     // Rule 1
                     new CORSConfiguration.CORSRule(
                         Arrays.asList(new String[] {"*"}), // Allowed headers
                         Arrays.asList(new String[] {"PUT", "POST", "DELETE"}), // Allowed methods
                         Arrays.asList(new String[] {"http://www.example.com"}), // Allowed origins
                         Arrays.asList(
                             new String[] {"x-amz-server-side-encryption"}), // Expose headers
                         null, // ID
                         3000), // Maximum age seconds
                     // Rule 2
                     new CORSConfiguration.CORSRule(
                         null, // Allowed headers
                         Arrays.asList(new String[] {"GET"}), // Allowed methods
                         Arrays.asList(new String[] {"*"}), // Allowed origins
                         null, // Expose headers
                         null, // ID
                         null // Maximum age seconds
                         )
                   }));
       CompletableFuture<Void> future = minioAsyncClient.setBucketCors(
           SetBucketCorsArgs.builder().bucket("my-bucketname").config(config).build());
       
      Parameters:
      args - SetBucketCorsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • deleteBucketCors

      public CompletableFuture<Void> deleteBucketCors(DeleteBucketCorsArgs args)
      Deletes CORS configuration of a bucket.
      Example:
       CompletableFuture<Void> future = minioAsyncClient.deleteBucketCors(
           DeleteBucketCorsArgs.builder().bucket("my-bucketname").build());
       
      Parameters:
      args - DeleteBucketCorsArgs object.
      Returns:
      CompletableFuture<Void> object.
    • getObjectAcl

      Gets access control policy of an object.
      Example:
       CompletableFuture<AccessControlPolicy> future =
           minioAsyncClient.getObjectAcl(
               GetObjectAclArgs.builder().bucket("my-bucketname").object("my-objectname").build());
       
      Parameters:
      args - GetObjectAclArgs object.
      Returns:
      CompletableFuture<AccessControlPolicy> object.
    • getObjectAttributes

      Gets attributes of an object.
      Example:
       CompletableFuture<GetObjectAttributesResponse> future =
           minioAsyncClient.getObjectAttributes(
               GetObjectAttributesArgs.builder()
                   .bucket("my-bucketname")
                   .object("my-objectname")
                   .objectAttributes(
                       new String[] {
                         "ETag", "Checksum", "ObjectParts", "StorageClass", "ObjectSize"
                       })
                   .build());
       
      Parameters:
      args - GetObjectAttributesArgs object.
      Returns:
      CompletableFuture<GetObjectAttributesResponse> object.
    • uploadSnowballObjects

      public CompletableFuture<ObjectWriteResponse> uploadSnowballObjects(UploadSnowballObjectsArgs args)
      Uploads multiple objects in a single put call. It is done by creating intermediate TAR file optionally compressed which is uploaded to S3 service.
      Example:
       // Upload snowball objects.
       List<SnowballObject> objects = new ArrayList<SnowballObject>();
       objects.add(
           new SnowballObject(
               "my-object-one",
               new ByteArrayInputStream("hello".getBytes(StandardCharsets.UTF_8)),
               5,
               null));
       objects.add(
           new SnowballObject(
               "my-object-two",
               new ByteArrayInputStream("java".getBytes(StandardCharsets.UTF_8)),
               4,
               null));
       CompletableFuture<ObjectWriteResponse> future = minioAsyncClient.uploadSnowballObjects(
           UploadSnowballObjectsArgs.builder().bucket("my-bucketname").objects(objects).build());
       
      Parameters:
      args - UploadSnowballObjectsArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • putObjectFanOut

      Uploads multiple objects with same content from single stream with optional metadata and tags.
      Example:
       Map<String, String> map = new HashMap<>();
       map.put("Project", "Project One");
       map.put("User", "jsmith");
       CompletableFuture<PutObjectFanOutResponse> future =
           minioAsyncClient.putObjectFanOut(
               PutObjectFanOutArgs.builder().bucket("my-bucketname").stream(
                       new ByteArrayInputStream("somedata".getBytes(StandardCharsets.UTF_8)), 8)
                   .entries(
                       Arrays.asList(
                           new PutObjectFanOutEntry[] {
                             PutObjectFanOutEntry.builder().key("fan-out.0").build(),
                             PutObjectFanOutEntry.builder().key("fan-out.1").tags(map).build()
                           }))
                   .build());
       
      Parameters:
      args - PutObjectFanOutArgs object.
      Returns:
      CompletableFuture<PutObjectFanOutResponse> object.
    • promptObject

      Performs language model inference with the prompt and referenced object as context.
      Parameters:
      args - PromptObjectArgs object.
      Returns:
      CompletableFuture<PromptObjectResponse> object.
    • appendObject

      Appends from a file, stream or data to existing object in a bucket.
      Parameters:
      args - AppendObjectArgs object.
      Returns:
      CompletableFuture<ObjectWriteResponse> object.
    • throwMinioException

      public void throwMinioException(CompletionException e) throws MinioException
      Throws encapsulated exception wrapped by CompletionException.
      Throws:
      MinioException
    • objectV1Lister

      protected Iterable<Result<Item>> objectV1Lister(ListObjectsV1Args args)
      Execute list objects v1.
    • objectV2Lister

      protected Iterable<Result<Item>> objectV2Lister(ListObjectsV2Args args)
      Execute list objects v2.
    • objectVersionLister

      protected Iterable<Result<Item>> objectVersionLister(ListObjectVersionsArgs args)
      Execute list object versions.