List of usage examples for com.amazonaws.services.ec2 AmazonEC2 runInstances
RunInstancesResult runInstances(RunInstancesRequest runInstancesRequest);
Launches the specified number of instances using an AMI for which you have permissions.
From source file:InstallYarn.java
License:Open Source License
public static void main(String[] args) throws JSchException, IOException, InterruptedException { /*/* ww w.ja va 2 s. co m*/ * The ProfileCredentialsProvider will return your [default] * credential profile by reading from the credentials file located at * (C:\\Users\\CH\\.aws\\credentials). */ AWSCredentials credentials = null; try { credentials = new BasicAWSCredentials("Your Access Key ID", "Your Secret Access Key"); } catch (Exception e) { throw new AmazonClientException("Cannot load the credentials from the credential profiles file. " + "Please make sure that your credentials file is at the correct " + "location (C:\\Users\\CH\\.aws\\credentials), and is in valid format.", e); } // Create the AmazonEC2Client object so we can call various APIs. AmazonEC2 ec2 = new AmazonEC2Client(credentials); Region usWest2 = Region.getRegion(Regions.US_WEST_2); ec2.setRegion(usWest2); /* // Create a new security group. try { CreateSecurityGroupRequest securityGroupRequest = new CreateSecurityGroupRequest( "GettingStartedGroup", "Getting Started Security Group"); CreateSecurityGroupResult result = ec2 .createSecurityGroup(securityGroupRequest); System.out.println(String.format("Security group created: [%s]", result.getGroupId())); } catch (AmazonServiceException ase) { // Likely this means that the group is already created, so ignore. System.out.println(ase.getMessage()); } String ipAddr = "0.0.0.0/0"; // Get the IP of the current host, so that we can limit the Security Group // by default to the ip range associated with your subnet. try { InetAddress addr = InetAddress.getLocalHost(); // Get IP Address ipAddr = addr.getHostAddress()+"/10"; } catch (UnknownHostException e) { } // Create a range that you would like to populate. List<String> ipRanges = Collections.singletonList(ipAddr); // Open up port 23 for TCP traffic to the associated IP from above (e.g. ssh traffic). IpPermission ipPermission = new IpPermission() .withIpProtocol("tcp") .withFromPort(new Integer(22)) .withToPort(new Integer(22)) .withIpRanges(ipRanges); List<IpPermission> ipPermissions = Collections.singletonList(ipPermission); try { // Authorize the ports to the used. AuthorizeSecurityGroupIngressRequest ingressRequest = new AuthorizeSecurityGroupIngressRequest( "GettingStartedGroup", ipPermissions); ec2.authorizeSecurityGroupIngress(ingressRequest); System.out.println(String.format("Ingress port authroized: [%s]", ipPermissions.toString())); } catch (AmazonServiceException ase) { // Ignore because this likely means the zone has already been authorized. System.out.println(ase.getMessage()); } */ //CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest() //.withKeyName("CHENHAO"); //CreateKeyPairResult createKeyPairResult = ec2.createKeyPair(createKeyPairRequest); //KeyPair keyPair = new KeyPair(); //keyPair = createKeyPairResult.getKeyPair(); //String privateKey = keyPair.getKeyMaterial(); int cluster_size = Integer .parseInt(JOptionPane.showInputDialog("Enter number of machines you want to set")); String ami_name = JOptionPane.showInputDialog("Enter your ami name"); String key_name = JOptionPane.showInputDialog("Enter your key name"); String s_group_name = JOptionPane.showInputDialog("Enter your security group name"); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.withImageId(ami_name).withInstanceType("t2.micro").withMinCount(cluster_size) .withMaxCount(cluster_size).withKeyName(key_name).withSecurityGroups(s_group_name); RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest); Thread.sleep(10000); Vector<String> instanceId = new Vector<String>(); for (Instance ins : runInstancesResult.getReservation().getInstances()) instanceId.add(ins.getInstanceId()); DescribeInstancesRequest request = new DescribeInstancesRequest(); request.setInstanceIds(instanceId); DescribeInstancesResult result = ec2.describeInstances(request); List<Reservation> reservations = result.getReservations(); List<Instance> instances_list = new Vector<Instance>(); for (int i = 0; i < reservations.size(); i++) instances_list.addAll(reservations.get(i).getInstances()); System.out.println("Plan cluster size:" + cluster_size + " Real size:" + instances_list.size()); JSch jsch = new JSch(); JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Choose your privatekey"); chooser.setFileHidingEnabled(false); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { System.out.println("You chose " + chooser.getSelectedFile().getAbsolutePath() + "."); jsch.addIdentity(chooser.getSelectedFile().getAbsolutePath()); } Session session; UserInfo ui = new MyUserInfo(); for (int i = 0; i < instances_list.size(); i++) { if (instances_list.get(i).getPublicIpAddress() == null) System.out.println("Error, public ip is null\n"); System.out.println("Connect to:" + instances_list.get(i).getPublicIpAddress() + "\n"); session = jsch.getSession("ubuntu", instances_list.get(i).getPublicIpAddress(), 22); session.setUserInfo(ui); session.connect(); // //if(i==0) //{ // transfer_file_to("/home/ubuntu","C:/Users/CH/Downloads/ch.pem",session); // exec("chmod 400 /home/ubuntu/ch.pem",session); //} //slaves file for (int j = 0; j < instances_list.size(); j++) { if (j != 0) exec("echo " + instances_list.get(j).getPrivateIpAddress() + "\n >> /usr/local/hadoop/etc/hadoop/slaves", session); } //core-site file String command = "sed -i 's#Master#" + instances_list.get(0).getPrivateIpAddress() + "#g' /usr/local/hadoop/etc/hadoop/core-site.xml"; exec(command, session); //hdfs-size file command = "sed -i 's#Master#" + instances_list.get(0).getPrivateIpAddress() + "#g' /usr/local/hadoop/etc/hadoop/core-site.xml"; exec(command, session); command = "sed -i 's#replication#" + Integer.toString(cluster_size - 1) + "#g' /usr/local/hadoop/etc/hadoop/core-site.xml"; exec(command, session); //yarn-size file command = "sed -i 's#Master#" + instances_list.get(0).getPrivateIpAddress() + "#g' /usr/local/hadoop/etc/hadoop/core-site.xml"; exec(command, session); session.disconnect(); } //username and passphrase will be given via UserInfo interface. //slaves file }
From source file:aws.example.ec2.CreateInstance.java
License:Open Source License
public static void main(String[] args) { final String USAGE = "To run this example, supply an instance name and AMI image id\n" + "Ex: CreateInstance <instance-name> <ami-image-id>\n"; if (args.length != 2) { System.out.println(USAGE); System.exit(1);//from w w w . j a v a2 s.c om } String name = args[0]; String ami_id = args[1]; final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); RunInstancesRequest run_request = new RunInstancesRequest().withImageId(ami_id) .withInstanceType(InstanceType.T1Micro).withMaxCount(1).withMinCount(1); RunInstancesResult run_response = ec2.runInstances(run_request); String instance_id = run_response.getReservation().getReservationId(); Tag tag = new Tag().withKey("Name").withValue(name); CreateTagsRequest tag_request = new CreateTagsRequest().withTags(tag); CreateTagsResult tag_response = ec2.createTags(tag_request); System.out.printf("Successfully started EC2 instance %s based on AMI %s", instance_id, ami_id); }
From source file:com.appdynamics.connectors.AWSConnector.java
License:Apache License
public IMachine createMachine(IComputeCenter computeCenter, IImage image, IMachineDescriptor machineDescriptor) throws InvalidObjectException, ConnectorException { boolean succeeded = false; Exception createFailureRootCause = null; Instance instance = null;//from ww w . ja v a 2 s . co m try { IProperty[] macProps = machineDescriptor.getProperties(); AmazonEC2 connector = getConnector(image, computeCenter, controllerServices); String amiName = Utils.getAMIName(image.getProperties(), controllerServices); List<String> securityGroups = getSecurityGroup(macProps); validateAndConfigureSecurityGroups(securityGroups, connector); controllerServices.getStringPropertyByName(macProps, Utils.SECURITY_GROUP) .setValue(getSecurityGroupsAsString(securityGroups)); String keyPair = Utils.getKeyPair(macProps, controllerServices); InstanceType instanceType = getInstanceType(macProps); String zone = Utils.getZone(macProps, controllerServices); String kernel = Utils.getKernel(macProps, controllerServices); String ramdisk = Utils.getRamDisk(macProps, controllerServices); String controllerHost = System.getProperty(CONTROLLER_SERVICES_HOST_NAME_PROPERTY_KEY, InetAddress.getLocalHost().getHostName()); int controllerPort = Integer.getInteger(CONTROLLER_SERVICES_PORT_PROPERTY_KEY, DEFAULT_CONTROLLER_PORT_VALUE); IAccount account = computeCenter.getAccount(); String accountName = account.getName(); String accountAccessKey = account.getAccessKey(); AgentResolutionEncoder agentResolutionEncoder = new AgentResolutionEncoder(controllerHost, controllerPort, accountName, accountAccessKey); String userData = agentResolutionEncoder.encodeAgentResolutionInfo(); String instanceName = Utils.getInstanceName(macProps, controllerServices); logger.info("Starting EC2 machine of Image :" + amiName + " Name :" + instanceName + " security :" + securityGroups + " keypair :" + keyPair + " instance :" + instanceType + " zone :" + zone + " kernel :" + kernel + " ramdisk :" + ramdisk + " userData :" + userData); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(amiName, 1, 1); runInstancesRequest.setSecurityGroups(securityGroups); runInstancesRequest.setUserData(Base64.encodeAsString(userData.getBytes())); runInstancesRequest.setKeyName(keyPair); runInstancesRequest.setInstanceType(instanceType); runInstancesRequest.setKernelId(kernel); runInstancesRequest.setRamdiskId(ramdisk); Reservation reservation = connector.runInstances(runInstancesRequest).getReservation(); List<Instance> instances = reservation.getInstances(); if (instances.size() == 0) throw new ConnectorException("Cannot create instance for image :" + image.getName()); instance = instances.get(0); //Set name for the instance if (!Strings.isNullOrEmpty(instanceName)) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()).withTags(new Tag("Name", instanceName)); connector.createTags(createTagsRequest); } logger.info("EC2 machine started; id:" + instance.getInstanceId()); IMachine machine; if (Strings.isNullOrEmpty(instance.getPublicDnsName())) { machine = controllerServices.createMachineInstance(instance.getInstanceId(), agentResolutionEncoder.getUniqueHostIdentifier(), computeCenter, machineDescriptor, image, getAgentPort()); } else { machine = controllerServices.createMachineInstance(instance.getInstanceId(), agentResolutionEncoder.getUniqueHostIdentifier(), instance.getPublicDnsName(), computeCenter, machineDescriptor, image, getAgentPort()); } if (kernel == null) { controllerServices.getStringPropertyByName(macProps, Utils.KERNEL).setValue(instance.getKernelId()); } if (zone == null) { DescribeAvailabilityZonesResult describeAvailabilityZonesResult = connector .describeAvailabilityZones(); List<AvailabilityZone> availabilityZones = describeAvailabilityZonesResult.getAvailabilityZones(); controllerServices.getStringPropertyByName(macProps, Utils.ZONE) .setValue(availabilityZones.get(0).getZoneName()); } controllerServices.getStringPropertyByName(macProps, Utils.INSTANCE_TYPE) .setValue(instance.getInstanceType()); succeeded = true; return machine; } catch (InvalidObjectException e) { createFailureRootCause = e; throw e; } catch (ConnectorException e) { createFailureRootCause = e; throw e; } catch (Exception e) { createFailureRootCause = e; throw new ConnectorException(e.getMessage(), e); } finally { // We have to make sure to terminate any orphan EC2 instances if // the machine create fails. if (!succeeded && instance != null) { try { ConnectorLocator.getInstance().getConnector(computeCenter, controllerServices) .terminateInstances( new TerminateInstancesRequest(Lists.newArrayList(instance.getInstanceId()))); } catch (Exception e) { throw new ConnectorException("Machine create failed, but terminate failed as well! " + "We have an orphan EC2 instance with id: " + instance.getInstanceId() + " that must be shut down manually. Root cause for machine " + "create failure is following: ", createFailureRootCause); } } } }
From source file:com.axemblr.provisionr.amazon.activities.RunOnDemandInstances.java
License:Apache License
@Override public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws IOException { final String businessKey = execution.getProcessBusinessKey(); final String securityGroupName = SecurityGroups.formatNameFromBusinessKey(businessKey); final String keyPairName = KeyPairs.formatNameFromBusinessKey(businessKey); final String instanceType = pool.getHardware().getType(); final String imageId = getImageIdFromProcessVariablesOrQueryImageTable(execution, pool.getProvider(), instanceType);// w ww . j ava 2s. c o m final String userData = Resources.toString( Resources.getResource(RunOnDemandInstances.class, "/com/axemblr/provisionr/amazon/userdata.sh"), Charsets.UTF_8); final RunInstancesRequest request = new RunInstancesRequest().withClientToken(businessKey) .withSecurityGroups(securityGroupName).withKeyName(keyPairName).withInstanceType(instanceType) .withImageId(imageId).withMinCount(pool.getMinSize()).withMaxCount(pool.getExpectedSize()) .withUserData(Base64.encodeBytes(userData.getBytes(Charsets.UTF_8))); // TODO allow for more options (e.g. monitoring & termination protection etc.) LOG.info(">> Sending RunInstances request: {}", request); RunInstancesResult result = client.runInstances(request); LOG.info("<< Got RunInstances result: {}", result); // TODO tag instances: managed-by: Axemblr Provisionr, business-key: ID etc. execution.setVariable(ProcessVariables.RESERVATION_ID, result.getReservation().getReservationId()); execution.setVariable(ProcessVariables.INSTANCE_IDS, collectInstanceIdsAsList(result.getReservation().getInstances())); }
From source file:com.dowdandassociates.gentoo.bootstrap.InstanceUtils.java
License:Apache License
public static Optional<Instance> onDemandInstance(AmazonEC2 ec2Client, Optional<Image> image, Integer minCount, Integer maxCount, SecurityGroupInformation securityGroupInformation, KeyPairInformation keyPairInformation, Optional<String> instanceType, Optional<String> availabilityZone, Long sleep) {/*from w w w . j a v a2s .c o m*/ if (!image.isPresent()) { return Optional.absent(); } RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withImageId(image.get().getImageId()) .withMinCount(minCount).withMaxCount(maxCount) .withSecurityGroups(securityGroupInformation.getGroupName()) .withKeyName(keyPairInformation.getName()); log.info("ImageId=" + image.get().getImageId()); log.info("MinCount=" + minCount); log.info("MaxCount=" + maxCount); log.info("SecurityGroups.1=" + securityGroupInformation.getGroupName()); log.info("KeyName=" + keyPairInformation.getName()); if (instanceType.isPresent()) { runInstancesRequest.setInstanceType(instanceType.get()); log.info("InstanceType=" + instanceType.get()); } if (availabilityZone.isPresent()) { runInstancesRequest.setPlacement(new Placement().withAvailabilityZone(availabilityZone.get())); log.info("Placement.AvailabilityZone=" + availabilityZone.get()); } RunInstancesResult runInstancesResult = ec2Client.runInstances(runInstancesRequest); DescribeInstanceStatusRequest describeInstanceStatusRequest = new DescribeInstanceStatusRequest() .withInstanceIds(runInstancesResult.getReservation().getInstances().get(0).getInstanceId()); try { while (true) { log.info("Sleeping for " + sleep + " ms"); Thread.sleep(sleep); DescribeInstanceStatusResult describeInstanceStatusResult = ec2Client .describeInstanceStatus(describeInstanceStatusRequest); if (describeInstanceStatusResult.getInstanceStatuses().isEmpty()) { continue; } InstanceStatus instance = describeInstanceStatusResult.getInstanceStatuses().get(0); String instanceState = instance.getInstanceState().getName(); log.info("instanceState = " + instanceState); if ("pending".equals(instanceState)) { continue; } if (!"running".equals(instanceState)) { return Optional.absent(); } String instanceStatus = instance.getInstanceStatus().getStatus(); String systemStatus = instance.getSystemStatus().getStatus(); log.info("instanceStatus = " + instanceStatus); log.info("systemStatus = " + systemStatus); if ("impaired".equals(instanceStatus)) { return Optional.absent(); } if ("impaired".equals(systemStatus)) { return Optional.absent(); } if (!"ok".equals(instanceStatus)) { continue; } if (!"ok".equals(systemStatus)) { continue; } break; } } catch (InterruptedException e) { return Optional.absent(); } DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(new DescribeInstancesRequest() .withInstanceIds(runInstancesResult.getReservation().getInstances().get(0).getInstanceId())); return Optional.fromNullable(describeInstancesResult.getReservations().get(0).getInstances().get(0)); }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
/** * Launches a single instance with given parameters. * The REQUIRED parameters are amiId;// www .ja va2 s . co m * You should always pass in a keyPair also, unless you know exactly what you are doing. Chances * are that you won't be able to get into your instance and it will be useless. * If groups is null, the instance will be launched with the default security group. * Subnet is only required if you're launching into a VPC. * * This will return the instanceId of the instance launched. * * @param amiId * @param subnetId * @param keyPair * @param size * @param userData * @param groups * @param ec2Client * @return instanceId */ public String launchAmi(String amiId, String subnetId, String keyPair, String size, String userData, List<String> groups, List<BlockDeviceMapping> blockMaps, String ariId, String akiId, String zone, String privateIp, AmazonEC2 ec2Client) { String instanceId = null; RunInstancesRequest request = new RunInstancesRequest().withImageId(amiId).withMinCount(1).withMaxCount(1); if (subnetId != null && !subnetId.isEmpty()) { // launch in VPC request = request.withSubnetId(subnetId); } else if (zone != null && !zone.isEmpty()) { // launch in EC2 Placement placement = new Placement().withAvailabilityZone(zone); request = request.withPlacement(placement); } else { log.error("No place to launch the instance specified." + "\nPlease specify either a subnet or region"); } if (keyPair != null) { request = request.withKeyName(keyPair); } if (size != null) { request = request.withInstanceType(size); } if (userData != null) { request = request.withUserData(Base64.encodeBase64String(userData.getBytes())); } if (groups != null && !groups.isEmpty()) { request = request.withSecurityGroupIds(groups); } if (blockMaps != null && !blockMaps.isEmpty()) { request = request.withBlockDeviceMappings(blockMaps); } if (ariId != null && !ariId.isEmpty()) { request = request.withRamdiskId(ariId); } if (akiId != null && !akiId.isEmpty()) { request = request.withKernelId(akiId); } if (privateIp != null && !privateIp.isEmpty()) { request = request.withPrivateIpAddress(privateIp); } RunInstancesResult result = ec2Client.runInstances(request); List<Instance> instances = result.getReservation().getInstances(); if (instances == null) { instanceId = null; log.error("List of instances is null!"); } else if (instances.size() == 0) { instanceId = null; log.error("List of instances is empty!"); } else if (instances.size() == 1) { instanceId = instances.get(0).getInstanceId(); log.info("Created instance with Id: " + instanceId); } else if (instances.size() > 1) { log.error("Too many instances! This is not supported!"); } return instanceId; }
From source file:de.tuhrig.deployman.launch.Launcher.java
private String runInstance(RunInstancesRequest request) { AmazonEC2 ec2 = this.ec2Client.getClient(); RunInstancesResult runInstances = ec2.runInstances(request); List<Instance> instances = runInstances.getReservation().getInstances(); return instances.get(0).getInstanceId(); }
From source file:ec2.CreateInstance.java
License:Open Source License
public static void main(String[] args) { final String USAGE = "To run this example, supply an instance name and AMI image id\n" + "Ex: CreateInstance <instance-name> <ami-image-id>\n"; if (args.length != 2) { System.out.println(USAGE); System.exit(1);//from w ww . ja v a2 s. com } String instanceName = args[0]; String amiImageId = args[1]; final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withImageId(amiImageId) .withInstanceType(InstanceType.T1Micro).withMaxCount(1).withMinCount(1); RunInstancesResult runInstanceResponse = ec2.runInstances(runInstancesRequest); String instanceId = runInstanceResponse.getReservation().getReservationId(); Tag nameTag = new Tag().withKey("Name").withValue(instanceName); CreateTagsRequest createTagsRequest = new CreateTagsRequest().withTags(nameTag); CreateTagsResult createTagsResponse = ec2.createTags(createTagsRequest); System.out.printf("Successfully started EC2 instance %s based on AMI %s", instanceId, amiImageId); }
From source file:edu.umass.cs.aws.support.AWSEC2.java
License:Apache License
/** * Create an Instance//w w w . j av a2 s . c om * * @param ec2 * @param amiRecord * @param key * @param securityGroup * @return the instanceID string */ public static String createInstanceAndWait(AmazonEC2 ec2, AMIRecord amiRecord, String key, SecurityGroup securityGroup) { RunInstancesRequest runInstancesRequest; if (amiRecord.getVpcSubnet() != null) { System.out.println( "subnet: " + amiRecord.getVpcSubnet() + " securityGroup: " + securityGroup.getGroupName()); // new VPC runInstancesRequest = new RunInstancesRequest().withMinCount(1).withMaxCount(1) .withImageId(amiRecord.getName()).withInstanceType(amiRecord.getInstanceType()).withKeyName(key) .withSubnetId(amiRecord.getVpcSubnet()) .withSecurityGroupIds(Arrays.asList(securityGroup.getGroupId())); } else { runInstancesRequest = new RunInstancesRequest(amiRecord.getName(), 1, 1); runInstancesRequest.setInstanceType(amiRecord.getInstanceType()); runInstancesRequest.setSecurityGroups(new ArrayList<>(Arrays.asList(securityGroup.getGroupName()))); runInstancesRequest.setKeyName(key); } RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest); Instance instance = runInstancesResult.getReservation().getInstances().get(0); String createdInstanceId = instance.getInstanceId(); System.out.println("Waiting for instance " + amiRecord.getName() + " to start"); long startTime = System.currentTimeMillis(); do { ThreadUtils.sleep(1000); if (System.currentTimeMillis() - startTime > 90000) {// give it a minute and a half System.out.println(createdInstanceId + " timed out waiting for start."); return null; } // regrab the instance data from the server instance = findInstance(ec2, createdInstanceId); //System.out.print(instance.getState().getName()); System.out.print("."); } while (instance != null && !instance.getState().getName().equals(InstanceStateRecord.RUNNING.getName())); System.out.println(); return createdInstanceId; }
From source file:eu.optimis.interopt.provider.aws.AmazonClient.java
License:Apache License
@Override public void deployService(String service_id, List<ServiceComponent> serviceComponents, XmlBeanServiceManifestDocument manifest) throws ServiceInstantiationException { AmazonEC2 ec2 = getAmazonEC2Client(); log.info("Deploying service..."); if (isDeployed(service_id)) { throw new ServiceInstantiationException( "This service is already deployed! " + "Terminate it before deploying it again.", new java.lang.Throwable()); }/* w w w.ja va 2 s.c o m*/ // Get the number of VMs to deploy int totalVms = 0; for (ServiceComponent sc : serviceComponents) { totalVms = totalVms + sc.getInstances(); } // If sum < maxvms invoke createVM method as many times as needed if (totalVms > AmazonClient.maxvms) { throw new ServiceInstantiationException("Number of VMs to deploy exceeds the maximum", new java.lang.Throwable()); } for (ServiceComponent sc : serviceComponents) { int numInstances = sc.getInstances(); log.info("Number of vm instances to deploy: " + numInstances); String imageId = sc.getImage(); InstanceType type = selectInstanceType(sc); Placement placement = new Placement(); placement.setAvailabilityZone(availabilityZone.getZoneName()); RunInstancesRequest req = new RunInstancesRequest(imageId, numInstances, numInstances); ArrayList<String> securityGroups = new ArrayList<String>(); securityGroups.add(SECURITY_GROUP); req.setSecurityGroupIds(securityGroups); req.setInstanceType(type); req.setPlacement(placement); //req.setMonitoring(true); try { RunInstancesResult res = ec2.runInstances(req); List<Instance> instances = res.getReservation().getInstances(); log.info("Creating Tags..."); for (Instance inst : instances) { Tag tag = new Tag("serviceid", service_id); List<Tag> tags = new ArrayList<Tag>(); tags.add(tag); List<String> resources = new ArrayList<String>(); resources.add(inst.getInstanceId()); CreateTagsRequest req2 = new CreateTagsRequest(resources, tags); ec2.createTags(req2); } } catch (AmazonServiceException e) { log.error("Service deployment has failed: "); log.error(printServiceException(e)); throw new ServiceInstantiationException("Service deployment has failed: " + e.getMessage(), new java.lang.Throwable()); } log.info("Service Deployed successfully!"); } }