https://github.com/making/simple-s3-client
A simple S3 Java Client that works with Spring RestTemplate or RestClient
https://github.com/making/simple-s3-client
Last synced: 10 months ago
JSON representation
A simple S3 Java Client that works with Spring RestTemplate or RestClient
- Host: GitHub
- URL: https://github.com/making/simple-s3-client
- Owner: making
- License: apache-2.0
- Created: 2023-12-11T05:48:30.000Z (over 2 years ago)
- Default Branch: develop
- Last Pushed: 2025-01-23T21:48:44.000Z (over 1 year ago)
- Last Synced: 2025-05-01T01:38:58.771Z (12 months ago)
- Language: Java
- Homepage:
- Size: 163 KB
- Stars: 5
- Watchers: 3
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-s3-client
A simple S3 Java Client that works with Spring `RestTemplate` or `RestClient`
```xml
am.ik.s3
simple-s3-client
0.2.2
```
## Examples with `RestTemplate`
Make sure the `RestTemplate` has `MappingJackson2XmlHttpMessageConverter` to convert XML responses.
```java
import static am.ik.s3.S3RequestBuilder.s3Request;
URI endpoint = URI.create("https://...");
String region = "...";
String accessKeyId = "...";
String secretAccessKey = "...";
String bucket = "...";
RestTemplate restTempalte = ...;
// Put a bucket
S3Request putBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.PUT)
.path(b -> b.bucket(bucket))
.build();
restTemplate.exchange(putBucketRequest.toEntityBuilder().build(), Void.class);
// List buckets
S3Request listBucketsRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b)
.build();
ListBucketsResult bucketsResult = restTemplate
.exchange(listBucketsRequest.toEntityBuilder().build(), ListBucketsResult.class)
.getBody();
System.out.println(bucketsResult);
// Put an object
String body = "Hello World!";
S3Request putObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.PUT)
.path(b -> b.bucket(bucket).key("hello.txt"))
.content(S3Content.of(body, MediaType.TEXT_PLAIN))
.build();
restTemplate.exchange(putObjectRequest.toEntityBuilder().body(body), Void.class);
// List a bucket
S3Request listBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b.bucket(bucket))
.build();
ListBucketResult bucketResult = restTemplate
.exchange(listBucketRequest.toEntityBuilder().build(), ListBucketResult.class)
.getBody();
System.out.println(bucketResult);
// Get an object
S3Request getObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b.bucket(bucket).key("hello.txt"))
.build();
String response = restTemplate.exchange(getObjectRequest.toEntityBuilder().build(), String.class).getBody();
System.out.println("Response: " + response); // Response: Hello World!
// Delete an object
S3Request deleteObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.DELETE)
.path(b -> b.bucket(bucket).key("hello.txt"))
.build();
restTemplate.exchange(deleteObjectRequest.toEntityBuilder().build(), Void.class);
// Delete a bucket
S3Request deleteBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.DELETE)
.path(b -> b.bucket(bucket))
.build();
restTemplate.exchange(deleteBucketRequest.toEntityBuilder().build(), Void.class);
```
## Examples with `RestClient`
Make sure the `RestClient` has `MappingJackson2XmlHttpMessageConverter` to convert XML responses.
```java
import static am.ik.s3.S3RequestBuilder.s3Request;
URI endpoint = URI.create("https://...");
String region = "...";
String accessKeyId = "...";
String secretAccessKey = "...";
String bucket = "...";
RestClient restClient = ...;
// Put a bucket
S3Request putBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.PUT)
.path(b -> b.bucket(bucket))
.build();
restClient.put().uri(putBucketRequest.uri()).headers(putBucketRequest.headers()).retrieve().toBodilessEntity();
// List buckets
S3Request listBucketsRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b)
.build();
ListBucketsResult bucketsResult = restClient.get()
.uri(listBucketsRequest.uri())
.headers(listBucketsRequest.headers())
.retrieve()
.body(ListBucketsResult.class);
System.out.println(bucketsResult);
// Put an object
String body = "Hello World!";
S3Request putObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.PUT)
.path(b -> b.bucket(bucket).key("hello.txt"))
.content(S3Content.of(body, MediaType.TEXT_PLAIN))
.build();
restClient.put()
.uri(putObjectRequest.uri())
.headers(putObjectRequest.headers())
.body(body)
.retrieve()
.toBodilessEntity();
// List a bucket
S3Request listBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b.bucket(bucket))
.build();
ListBucketResult bucketResult = restClient.get()
.uri(listBucketRequest.uri())
.headers(listBucketRequest.headers())
.retrieve()
.body(ListBucketResult.class);
System.out.println(bucketResult);
// Get an object
S3Request getObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.GET)
.path(b -> b.bucket(bucket).key("hello.txt"))
.build();
String response = restClient.get()
.uri(getObjectRequest.uri())
.headers(getObjectRequest.headers())
.retrieve()
.body(String.class);
System.out.println("Response: " + response); // Response: Hello World!
// Delete an object
S3Request deleteObjectRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.DELETE)
.path(b -> b.bucket(bucket).key("hello.txt"))
.build();
restClient.delete()
.uri(deleteObjectRequest.uri())
.headers(deleteObjectRequest.headers())
.retrieve()
.toBodilessEntity();
// Delete a bucket
S3Request deleteBucketRequest = s3Request().endpoint(endpoint)
.region(region)
.accessKeyId(accessKeyId)
.secretAccessKey(secretAccessKey)
.method(HttpMethod.DELETE)
.path(b -> b.bucket(bucket))
.build();
restClient.delete()
.uri(deleteBucketRequest.uri())
.headers(deleteBucketRequest.headers())
.retrieve()
.toBodilessEntity();
```