How do I use Stook with the AWS Java SDK?

Integrate Medianova Stook Object Storage into your Java applications using the AWS SDK for Java.

You can connect Java applications to Medianova Stook Object Storage using the AWS SDK for Java. This allows you to create buckets, upload files, and manage objects directly from your Java code.


Prerequisites

  • JDK installed on your system

  • AWS SDK for Java

  • Medianova Stook credentials:

    • Access Key

    • Secret Key

    • Endpoint


Installation

Download the AWS SDK for Java from the official site:


Example: Create a Bucket and Upload File

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import com.amazonaws.services.s3.model.GetBucketLocationRequest;

public class s3Example {
    
   private static final String SERVICE_ENDPOINT = "https://******.mncdn.com";
   private static final String REGION = "us-east-1";
   private static final String ACCESS_KEY = "******";
   private static final String SECRET_KEY = "******";

   private static final String BUCKET_NAME = "bucket";

   private static final AmazonS3 AMAZON_S3_CLIENT = 
       AmazonS3ClientBuilder.standard()
       .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(SERVICE_ENDPOINT, REGION))
       .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY)))
       .withPathStyleAccessEnabled(true)
       .build();

   public static String uploadFile(byte[] data) throws IOException {
       try (InputStream inputStream = new ByteArrayInputStream(data)) {
           String filename = "test.txt";

           ObjectMetadata metadata = new ObjectMetadata();
           metadata.setContentLength(data.length);

           PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, filename, inputStream, metadata)
                   .withCannedAcl(CannedAccessControlList.PublicRead);

           AMAZON_S3_CLIENT.putObject(putObjectRequest);

           return AMAZON_S3_CLIENT.getUrl(BUCKET_NAME, filename).toString();
       }
   }

   public static void main(String[] args) {
       if (!AMAZON_S3_CLIENT.doesBucketExistV2(BUCKET_NAME)) {
           AMAZON_S3_CLIENT.createBucket(new CreateBucketRequest(BUCKET_NAME));

           String bucketLocation = AMAZON_S3_CLIENT.getBucketLocation(new GetBucketLocationRequest(BUCKET_NAME));
           System.out.println("Bucket location: " + bucketLocation);
       }

       try {
           uploadFile("Hello World".getBytes());
       } catch (IOException e) {
           e.printStackTrace();
       }
       System.out.println("Hello, World");
   }
}

Example Java code for connecting to Stook, creating a bucket, and uploading a file


Troubleshooting / FAQ

  • Bucket already exists error: Use a unique bucket name.

  • Connection error: Verify endpoint URL and credentials.

  • Access denied: Check Access Key and Secret Key.


References

Last updated

Was this helpful?