Using S3 libraries with Minio mock server

In the continuation of my previous S3 article,

I present you, how to write a S3 Java Sample program that is using a S3 to develop the functionalities.

In this , I will be using :

First step : running our mock S3 server

We will use Minio as our S3 server.

You need to have installed on your machine. Once installed. type the following commands in your terminal :

docker pull /minio
docker run -p 9000:9000 minio/minio server /data


Your terminal should show you something similar to this screenshot :

Minio launching using Docker
Minio launching using Docker

The following informations are important :

  • Your access key
  • Your secret token
  • And the endpoint

With your browser, you can open an UI on Minio and browse your buckets and objects :

I modified my Java example to pass all the informations (link) :

public class AmazonS3Example {

    private static final Logger LOGGER = LoggerFactory.getLogger(AmazonS3Example.class);

    public static void main(final String[] args) {

	final AmazonArgs amazonArgs = new AmazonArgs();


My is doing these basic tasks :

  • Creating a bucket
  • Get the list of buckets on the server
  • Checking for the existence of this newly created bucket
  • Creating a folder inside this bucket
  • Uploading a file in the folder of this bucket (creates a new object)
  • Reading the object content
  • Deleting the folder
  • Deleting the bucket

Feedback : When writing my example, I had some issues with the Amazon s3 client (especially the v2 methods to detect the presence of an object, a cluster) and with the RegionName of the Amazon client that is guessing the region based on the endpoint. You should rather store this information as a configuration , accessible by all your objects.

Using Minio and a S3 code seems to be easy, for most of the S3 basic operations.

Have you tried it ? What is your opinion about Minio ?


Next to read  Writing custom Cobol Rules with SonarQube