Apache jclouds® is an open source multi-cloud toolkit for the Java platform that gives you the freedom to create applications that are portable across clouds while giving you full control to use cloud-specific features.
The latest version is 1.9.2 released on 2016-01-16! Read the release notes.
ComputeService compute = ContextBuilder.newBuilder("aws-ec2")
.credentials("identity", "credential")
.buildView(ComputeServiceContext.class)
.getComputeService();
Template template = compute.templateBuilder()
.osFamily(OsFamily.UBUNTU)
.minRam(2048)
.options(inboundPorts(22, 80))
.build();
compute.createNodesInGroup("jclouds", 1, template);
BlobStore blobStore = ContextBuilder.newBuilder("aws-s3")
.credentials("identity", "credential")
.buildView(BlobStoreContext.class)
.getBlobStore();
blobStore.createContainerInLocation(location, "container-name");
ByteSource payload = ByteSource.wrap(new byte[] {1, 2, 3, 4});
Blob blob = blobStore.blobBuilder("blob-name")
.payload(payload)
.contentLength(payload.size())
.build();
blobStore.putBlob("container-name", blob);
The portable Compute interface allows users to provision their infrastructure in any cloud provider. With Apache jclouds® users are in control of the entire process: deployment configuration, provisioning and bootstrap.
Using the BlobStore interface, users can easily store objects in a wide range of blob store providers, regardless of how big the objects to manage are, or how many files are there.
The Load Balancer abstraction provides a common interface to configure the load balancers in any cloud that supports them. Just define the load balancer and the nodes that should join it, and it will be ready for the action.
Apache jclouds® also provides DNS, firewall, storage, configuration management, image management, provider specific APIs, and much more. Make sure to check them out!