This is the code to create a Redshift Cluster.
import java.io.IOException;
import com.amazonaws.services.redshift.AmazonRedshift;
import com.amazonaws.services.redshift.AmazonRedshiftClientBuilder;
import com.amazonaws.services.redshift.model.*;
public class CreateAndModifyCluster {
public static AmazonRedshift client;
public static String clusterIdentifier = "democluster";
public static long sleepTime = 20;
public static void main(String[] args) throws IOException {
// Default client using the {@link com.amazonaws.auth.DefaultAWSCredentialsProviderChain}
client = AmazonRedshiftClientBuilder.defaultClient();
try {
createCluster();
waitForClusterReady();
describeClusters();
modifyCluster();
describeClusters();
} catch (Exception e) {
System.err.println("Operation failed: " + e.getMessage());
}
}
private static void createCluster() {
CreateClusterRequest request = new CreateClusterRequest()
.withClusterIdentifier(clusterIdentifier)
.withMasterUsername("masteruser")
.withMasterUserPassword("password123")
.withNodeType("dc2.large")
.withNumberOfNodes(2)
.withClusterSubnetGroupName("priyajclustersubnet");
Cluster createResponse = client.createCluster(request);
System.out.println("Created cluster " + createResponse.getClusterIdentifier());
}
private static void describeClusters() {
DescribeClustersRequest request = new DescribeClustersRequest()
.withClusterIdentifier(clusterIdentifier);
DescribeClustersResult result = client.describeClusters(request);
printResult(result);
}
private static void modifyCluster() {
ModifyClusterRequest request = new ModifyClusterRequest()
.withClusterIdentifier(clusterIdentifier)
.withPreferredMaintenanceWindow("sat:07:30-sun:08:00");
client.modifyCluster(request);
System.out.println("Modified cluster " + clusterIdentifier);
}
private static void printResult(DescribeClustersResult result)
{
if (result == null)
{
System.out.println("Describe clusters result is null.");
return;
}
System.out.println("Cluster property:");
System.out.format("Preferred Maintenance Window: %s\n", result.getClusters().get(0).getPreferredMaintenanceWindow());
}
private static void waitForClusterReady() throws InterruptedException {
Boolean clusterReady = false;
System.out.println("Wating for cluster to become available.");
while (!clusterReady) {
DescribeClustersResult result = client.describeClusters(new DescribeClustersRequest()
.withClusterIdentifier(clusterIdentifier));
String status = (result.getClusters()).get(0).getClusterStatus();
if (status.equalsIgnoreCase("available")) {
clusterReady = true;
}
else {
System.out.print(".");
Thread.sleep(sleepTime*1000);
}
}
}
}
Hope this helps.