· 6 years ago · Mar 28, 2019, 11:50 AM
1package org.dps.ass1;
2
3import com.amazonaws.auth.AWSCredentials;
4import com.amazonaws.auth.AWSStaticCredentialsProvider;
5import com.amazonaws.auth.BasicAWSCredentials;
6import com.amazonaws.regions.Regions;
7import com.amazonaws.services.ec2.AmazonEC2;
8import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
9import com.amazonaws.services.ec2.model.*;
10import java.util.Arrays;
11import java.util.List;
12
13public class App {
14
15 private static final AWSCredentials AWS_CREDENTIALS;
16
17 static {
18 // Your accesskey and secretkey
19 AWS_CREDENTIALS = new BasicAWSCredentials(
20 "AKIAJVXQULSWZZR5TAFQ",
21 "LWek3Uu7iuqzGtEokUd9fkzuu3+BoEMO/DTUSy9J"
22 );
23 }
24
25 public static void main(String[] args) {
26
27 // Set up the amazon ec2 client
28 AmazonEC2 ec2Client = AmazonEC2ClientBuilder.standard()
29 .withCredentials(new AWSStaticCredentialsProvider(AWS_CREDENTIALS))
30 .withRegion(Regions.EU_CENTRAL_1)
31 .build();
32
33 // Launch an Amazon EC2 Instance
34 RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withImageId("ami-09def150731bdbcc2")
35 .withInstanceType("t2.micro") // https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html
36 .withMinCount(1)
37 .withMaxCount(1)
38 .withNetworkInterfaces(new InstanceNetworkInterfaceSpecification()
39 .withAssociatePublicIpAddress(true)
40 .withDeviceIndex(0)
41 .withSubnetId("subnet-1e755963")
42 .withGroups("sg-21a76f40"));
43
44 RunInstancesResult runInstancesResult = ec2Client.runInstances(runInstancesRequest);
45
46 Instance instance = runInstancesResult.getReservation().getInstances().get(0);
47 String instanceId = instance.getInstanceId();
48
49
50 // Setting up the tags for the instance
51 CreateTagsRequest createTagsRequest = new CreateTagsRequest()
52 .withResources(instance.getInstanceId())
53 .withTags(new Tag("Name", "codeflex-ec2"));
54 ec2Client.createTags(createTagsRequest);
55
56 // Starting the Instance
57 StartInstancesRequest startInstancesRequest = new StartInstancesRequest().withInstanceIds(instanceId);
58
59 ec2Client.startInstances(startInstancesRequest);
60
61 SQLiteJDBC db = new SQLiteJDBC();
62 db.createDataBase();
63 getInstanceInformation(instance, ec2Client, db);
64 db.selectAll();
65
66 try
67 {
68 Thread.sleep(1000);
69 }
70 catch(InterruptedException ex)
71 {
72 Thread.currentThread().interrupt();
73 }
74
75 TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest().withInstanceIds(instanceId);
76 ec2Client.terminateInstances(terminateInstancesRequest);
77 }
78
79 public static void getInstanceInformation(Instance instance, AmazonEC2 ec2Client, SQLiteJDBC db) {
80
81 DescribeInstancesRequest request = new DescribeInstancesRequest();
82 String[] ids = new String[]{instance.getInstanceId()};
83 request.setInstanceIds(Arrays.asList(ids));
84
85 DescribeInstancesResult result = ec2Client.describeInstances(request);
86 List<Reservation> reservations = result.getReservations();
87 List<Instance> instances;
88 for(Reservation res : reservations){
89 instances = res.getInstances();
90 for(Instance ins : instances){
91 System.out.println("#---------- INSTANCE INFORMATION ----------#");
92 System.out.println("EC2 Instance Id: " + ins.getInstanceId());
93 System.out.println("EC2 Instance type: " + ins.getInstanceType());
94 System.out.println("EC2 Instance public IP: " + ins.getPublicIpAddress());
95 System.out.println("EC2 Instance private IP: " + ins.getPrivateIpAddress());
96 System.out.println("EC2 Instance region: " + ins.getPlacement().getAvailabilityZone());
97 db.insertIntoDB(ins.getInstanceType(), ins.getInstanceId(),ins.getPrivateIpAddress(),ins.getPublicIpAddress(),ins.getPlacement().getAvailabilityZone(),ins.getPlacement().getAvailabilityZone());
98 }
99 }
100 }
101
102}