List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest setMinCount
public void setMinCount(Integer minCount)
The minimum number of instances to launch.
From source file:advanced.Requests.java
License:Open Source License
public void launchOnDemand() { //============================================================================================// //====================================== Launch an On-Demand Instance ========================// //====================================== If we Didn't Get a Spot Instance ====================// //============================================================================================// // Setup the request for 1 x t1.micro using the same security group and // AMI id as the Spot request. RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.setInstanceType(instanceType); runInstancesRequest.setImageId(amiID); runInstancesRequest.setMinCount(Integer.valueOf(1)); runInstancesRequest.setMaxCount(Integer.valueOf(1)); // Add the security group to the request. ArrayList<String> securityGroups = new ArrayList<String>(); securityGroups.add(securityGroup);/*from w w w . j a va2s . c om*/ runInstancesRequest.setSecurityGroups(securityGroups); // Launch the instance. RunInstancesResult runResult = ec2.runInstances(runInstancesRequest); // Add the instance id into the instance id list, so we can potentially later // terminate that list. for (Instance instance : runResult.getReservation().getInstances()) { System.out.println("Launched On-Demand Instace: " + instance.getInstanceId()); instanceIds.add(instance.getInstanceId()); } }
From source file:com.liferay.amazontools.AMIBuilder.java
License:Open Source License
protected void start() { RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); String availabilityZone = properties.getProperty("availability.zone"); if (!isZoneAvailable(availabilityZone)) { throw new RuntimeException("Unavailable zone " + availabilityZone); }// w ww . j a v a 2 s . c o m String imageId = properties.getProperty("image.id"); if (imageId == null) { imageId = getImageId(properties.getProperty("image.name")); } runInstancesRequest.setImageId(imageId); runInstancesRequest.setInstanceType(properties.getProperty("instance.type")); runInstancesRequest.setKeyName(properties.getProperty("key.name")); runInstancesRequest.setMaxCount(1); runInstancesRequest.setMinCount(1); Placement placement = new Placement(); placement.setAvailabilityZone(availabilityZone); runInstancesRequest.setPlacement(placement); List<String> securityGroupsIds = new ArrayList<String>(); securityGroupsIds.add(properties.getProperty("security.group.id")); runInstancesRequest.setSecurityGroupIds(securityGroupsIds); RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest); Reservation reservation = runInstancesResult.getReservation(); List<Instance> instances = reservation.getInstances(); if (instances.isEmpty()) { throw new RuntimeException("Unable to create instances"); } Instance instance = instances.get(0); _instanceId = instance.getInstanceId(); _publicIpAddress = instance.getPublicIpAddress(); StringBuilder sb = new StringBuilder(13); sb.append("{imageId="); sb.append(instance.getImageId()); sb.append(", instanceId="); sb.append(_instanceId); sb.append(", instanceType="); sb.append(instance.getInstanceType()); sb.append(", keyName="); sb.append(instance.getKeyName()); sb.append(", reservationId="); sb.append(reservation.getReservationId()); sb.append(", state="); InstanceState instanceState = instance.getState(); sb.append(instanceState.getName()); sb.append("}"); System.out.println("Starting instance " + sb.toString()); boolean running = false; for (int i = 0; i < 6; i++) { sleep(30); instance = getRunningInstance(_instanceId); if (instance != null) { _publicIpAddress = instance.getPublicIpAddress(); running = true; sb = new StringBuilder(7); sb.append("{instanceId="); sb.append(_instanceId); sb.append(", publicIpAddress="); sb.append(_publicIpAddress); sb.append(", stat="); instanceState = instance.getState(); sb.append(instanceState.getName()); sb.append("}"); System.out.println("Started instance " + sb.toString()); break; } } if (!running) { throw new RuntimeException("Unable to start instance " + _instanceId); } }
From source file:com.norbl.cbp.ppe.Ec2Wrangler.java
License:Open Source License
/** This version of <tt>launchInstances()</tt> gets all * parameters from method arguments. /*from www .ja v a2 s .c o m*/ * * @param instanceType * @param imageID * @param availabilityZone * @param minInstances * @param maxInstances * @param keyName * @param securityGroupName * @param networkName * @param userData * @return * @throws MissingParamsException * @throws ImproperParamException */ public String launchInstances(InstanceType instanceType, String imageID, String availabilityZone, int minInstances, int maxInstances, String keyName, String securityGroupName, String networkName, String userData) throws MissingParamsException, ImproperParamException { if ((minInstances < 1) || (maxInstances < minInstances)) throw new ImproperParamException("instances min=" + minInstances + " max=" + maxInstances); RunInstancesRequest req = new RunInstancesRequest(); req.setInstanceType(instanceType); req.setImageId(imageID); if (Ec2Location.isValidAvailablityZone(ec2Client, availabilityZone)) setAvailabilityZone(req, availabilityZone); // else any zone will do, so don't set it. req.setMinCount(minInstances); req.setMaxCount(maxInstances); req.setKeyName(keyName); List<String> sgs = new ArrayList<String>(); sgs.add(securityGroupName); req.setSecurityGroups(sgs); req.setUserData(Base64.encodeBase64String(userData.getBytes())); String networkID = NiM.createNetworkID(); NetworkInfo ni = new NetworkInfo(networkID, networkName); NiM.register(ni); ni.setState(NetworkInfo.State.pending); if (isHVM(imageID)) setupClusterPlacementGroup(req); RunInstancesResult rr = ec2Client.runInstances(req); NiM.update(this); // Update the network info waitForAllInstancesToBeRunning(rr); tagInstances(getInstanceIDs(rr), networkID, networkName); NiM.update(getInstancesAllListed()); // Update the network info return (networkID); }
From source file:com.pinterest.arcee.aws.EC2HostInfoDAOImpl.java
License:Apache License
@Override public List<HostBean> launchEC2Instances(GroupBean groupBean, int instanceCnt, String subnet) throws Exception { RunInstancesRequest request = new RunInstancesRequest(); request.setImageId(groupBean.getImage_id()); request.setInstanceType(groupBean.getInstance_type()); request.setKeyName("ops"); request.setSecurityGroupIds(Arrays.asList(groupBean.getSecurity_group())); request.setSubnetId(subnet);// w ww. j a v a 2s .c om request.setUserData(groupBean.getUser_data()); IamInstanceProfileSpecification iamRole = new IamInstanceProfileSpecification(); iamRole.setArn(groupBean.getIam_role()); request.setIamInstanceProfile(iamRole); request.setMinCount(instanceCnt); request.setMaxCount(instanceCnt); List<HostBean> newHosts = new ArrayList<>(); try { RunInstancesResult result = ec2Client.runInstances(request); List<Instance> instances = result.getReservation().getInstances(); LOG.info("Launch instances {}", instances.toString()); for (Instance instance : instances) { HostBean host = new HostBean(); host.setHost_name(instance.getInstanceId()); host.setHost_id(instance.getInstanceId()); host.setIp(instance.getPrivateIpAddress()); host.setGroup_name(groupBean.getGroup_name()); host.setState(HostState.PROVISIONED); host.setCreate_date(instance.getLaunchTime().getTime()); host.setLast_update(instance.getLaunchTime().getTime()); newHosts.add(host); } } catch (AmazonClientException ex) { LOG.error(String.format("Failed to call aws runInstances when launching host %s", newHosts.toString()), ex); throw new DeployInternalException( String.format("Failed to call aws runInstances when launching host %s", newHosts.toString()), ex); } return newHosts; }
From source file:elasticity.services.AmazonService.java
License:Open Source License
/** * Runs a VM instance on an EC2 compatible cloud. * /*from w w w . ja v a 2 s . c o m*/ * @return The IP of the started instance. */ public String runInstance() throws Exception { logger.log(Level.INFO, "Running new instance.."); //Prepares the run request. RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.setImageId(awsImageId); runInstancesRequest.setKeyName(awsKeypair); runInstancesRequest.setSecurityGroups(Collections.singleton(awsSecurityGroup)); runInstancesRequest.setInstanceType(awsInstanceType); runInstancesRequest.setMaxCount(1); runInstancesRequest.setMinCount(1); //Executes the run request. String instanceId = ""; //Will be changed eventually. boolean done = false; while (!done) { try { RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest); instanceId = runInstancesResult.getReservation().getInstances().get(0).getInstanceId(); done = true; } catch (Exception e) { logger.log(Level.INFO, "Error while sending RunInstanceRequest, retrying in 1s..."); e.printStackTrace(System.out); Thread.sleep(1000); } } logger.log(Level.INFO, "Sent RunInstanceRequest successfully.."); //Waits for the instance to be "running". String instanceIp = ""; //Will be changed eventually. done = false; while (!done) { try { Thread.sleep(1000); DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest(); describeInstancesRequest.withInstanceIds(instanceId); DescribeInstancesResult describeInstancesResult = ec2.describeInstances(describeInstancesRequest); Instance instance = describeInstancesResult.getReservations().get(0).getInstances().get(0); logger.log(Level.INFO, "Current instance state: " + instance.getState().getName() + ".."); if (instance.getState().getName().equals("running")) { instanceIp = instance.getPrivateIpAddress(); ip2id.put(instanceIp, instanceId); done = true; } } catch (Exception e) { logger.log(Level.INFO, "Failed to get instance description, retrying.."); } } logger.log(Level.INFO, "Instance ran with IP: " + instanceIp + "."); return instanceIp; }
From source file:fr.xebia.cloud.amazon.aws.tools.AmazonAwsUtils.java
License:Apache License
/** * <p>//from w w w. ja v a2 s . c o m * Create EC2 instances and ensure these instances are successfully started. * </p> * <p> * Successfully started means they reached the * {@link InstanceStateName#Running} state. * </p> * <p> * If the startup of an instance failed (e.g. * "Server.InternalError: Internal error on launch"), the instance is * terminated and another one is launched. * </p> * <p> * Max retry count: 3. * </p> * * @param runInstancesRequest * @param ec2 * @return list of "Running" created instances. List size is greater or * equals to given {@link RunInstancesRequest#getMinCount()} */ @Nonnull public static List<Instance> reliableEc2RunInstances(@Nonnull RunInstancesRequest runInstancesRequest, @Nonnull AmazonEC2 ec2) { int initialInstanceMinCount = runInstancesRequest.getMinCount(); int initialInstanceMaxCount = runInstancesRequest.getMaxCount(); try { int tryCount = 1; List<Instance> result = ec2.runInstances(runInstancesRequest).getReservation().getInstances(); result = AmazonAwsUtils.awaitForEc2Instances(result, ec2); //Check for instances state while (result.size() < initialInstanceMinCount && tryCount < 3) { runInstancesRequest.setMinCount(initialInstanceMinCount - result.size()); runInstancesRequest.setMaxCount(initialInstanceMinCount - result.size()); List<Instance> instances = ec2.runInstances(runInstancesRequest).getReservation().getInstances(); instances = AmazonAwsUtils.awaitForEc2Instances(instances, ec2); result.addAll(instances); tryCount++; } //Check for SSH availability for (Iterator<Instance> itInstance = result.iterator(); itInstance.hasNext();) { Instance instance = itInstance.next(); try { if (instance.getImageId().equals(InfrastructureCreationStep.GRAPHITE_IMAGE_ID)) { awaitForSshAvailability(instance, "root"); } else { awaitForSshAvailability(instance, "ec2-user"); } } catch (IllegalStateException e) { //Not available => terminate instance ec2.terminateInstances( new TerminateInstancesRequest(Lists.newArrayList(instance.getInstanceId()))); itInstance.remove(); } } if (result.size() < initialInstanceMinCount) { throw new IllegalStateException("Failure to create " + initialInstanceMinCount + " instances, only " + result.size() + " instances (" + Joiner.on(",").join( Collections2.transform(result, AmazonAwsFunctions.EC2_INSTANCE_TO_INSTANCE_ID)) + ") were started on request " + runInstancesRequest); } return result; } finally { // restore runInstancesRequest state runInstancesRequest.setMinCount(initialInstanceMinCount); runInstancesRequest.setMaxCount(initialInstanceMaxCount); } }
From source file:jp.aws.test.ec2.EC2Instance.java
License:Apache License
/** * EC2/*from www .ja v a2 s .co m*/ * * @param imageId * @param min * @param max * @param instanceType * @param keyPairName * @param availabilityZone * @param securityGroups * @return Vector<Instance> * @throws Exception */ public Vector<Instance> launchEC2Instances(String imageId, int min, int max, String instanceType, String keyPairName, String availabilityZone, Collection<String> securityGroups, String additionalInfo, String userData) throws Exception { Vector<Instance> newInstances = new Vector<Instance>(); if (min <= 0 || max <= 0 || min > max) { return newInstances; } RunInstancesRequest request = new RunInstancesRequest(); request.setImageId(imageId); request.setInstanceType(instanceType); request.setMinCount(min); request.setMaxCount(max); Placement p = new Placement(); if (availabilityZone.toLowerCase().equals("any")) availabilityZone = ""; // ?????? p.setAvailabilityZone(availabilityZone); request.setPlacement(p); request.setSecurityGroups(securityGroups); request.setKeyName(keyPairName);// assign Keypair name for this request request.setUserData(userData); request.setAdditionalInfo(additionalInfo); // RunInstancesResult runInstancesRes = clientManager.ec2().runInstances(request); String reservationId = runInstancesRes.getReservation().getReservationId(); List<Instance> instances = runInstancesRes.getReservation().getInstances(); if (runInstancesRes != null) { for (Instance instance : instances) { // EC2InstanceObject newInstanceObject = new // EC2InstanceObject(); // newInstanceObject.setDnsName(i.getPublicDnsName()); // newInstanceObject.setInstanceId(i.getInstanceId()); // instances.add(newInstanceObject); // newInstances.add(newInstanceObject); newInstances.add(instance); } } return newInstances; }
From source file:n3phele.factory.ec2.VirtualServerResource.java
License:Open Source License
private int addOnDemandInstance(List<VirtualServer> items) { RunInstancesRequest vs = new RunInstancesRequest(); vs.setMinCount(items.size()); vs.setMaxCount(items.size());//from w w w.j av a 2s . co m String token = items.get(0).getIdempotencyKey(); if (token != null && token.length() > 64) { token = token.substring(token.length() - 64); } vs.setClientToken(token); HashMap<String, String> map = items.get(0).getParametersMap(); Injector.inject(vs, map); if (map.containsKey("availabilityZone") || map.containsKey("groupName")) { Placement p = new Placement(); if (map.containsKey("availabilityZone")) { String availabilityZone = map.get("availabilityZone"); if (availabilityZone != null && !availabilityZone.equals("")) { p.setAvailabilityZone(map.get("availabilityZone")); vs.setPlacement(p); } } if (map.containsKey("groupName")) { String groupName = map.get("groupName"); if (groupName != null && !groupName.equals("")) { p.setGroupName(map.get("groupName")); vs.setPlacement(p); } } } if (items.size() == 1 && createWithZombie(items.get(0))) { return 1; } AmazonEC2Client client = getEC2Client(items.get(0).getAccessKey(), items.get(0).getEncryptedKey(), items.get(0).getLocation()); RunInstancesResult result = null; try { result = client.runInstances(vs); } catch (AmazonServiceException e) { log.log(Level.WARNING, "EC2 error " + e.getErrorCode(), e); throw new WebApplicationException(e, Status.BAD_REQUEST); } catch (AmazonClientException e) { log.log(Level.SEVERE, "EC2 AmazonClientException", e); log.severe("Check for orphaned VMs"); try { result = client.runInstances(vs); } catch (Exception e2) { log.log(Level.SEVERE, "EC2 AmazonClientException", e2); throw new WebApplicationException(e, Status.BAD_REQUEST); } } int i = 0; for (Instance ec2Instance : result.getReservation().getInstances()) { log.info("Create VM[" + i + "] has Instance id " + ec2Instance.getInstanceId()); items.get(i).setInstanceId(ec2Instance.getInstanceId()); i++; } return result.getReservation().getInstances().size(); }
From source file:net.firejack.aws.web.controller.AWSController.java
License:Apache License
@ResponseBody @RequestMapping(value = "instance", method = RequestMethod.POST) public Status spotInstance(@RequestBody InstanceModel instance) { if (amazonEC2 == null) throw new AmazonServiceException("Amazon service can't initialize"); if (!instance.isValid()) throw new AmazonServiceException("Invalid message"); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.setInstanceType(instance.getInstanceType()); runInstancesRequest.setImageId(instance.getAmi()); runInstancesRequest.setMinCount(1); runInstancesRequest.setMaxCount(1);/* www. j ava2s . co m*/ runInstancesRequest.setKeyName(instance.getKey()); runInstancesRequest.setSecurityGroupIds(Arrays.asList(instance.getSecurityGroup())); amazonEC2.runInstances(runInstancesRequest); return new Status("Server has been started"); }
From source file:net.firejack.aws.web.controller.AWSController.java
License:Apache License
@ResponseBody @RequestMapping(value = "install", method = RequestMethod.POST) public Status startInstance(@RequestBody Auth auth) { if (!auth.isValid()) throw new AmazonServiceException("Access or Secret Key is empty"); if (amazonEC2 != null) { amazonEC2.shutdown();/*from w w w . j a v a2 s. co m*/ } amazonEC2 = new AmazonEC2Client(new BasicAWSCredentials(auth.getAccessKey(), auth.getSecretKey())); amazonEC2.setRegion(RegionUtils.getRegion(instanceRegion)); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.setInstanceType(InstanceType.fromValue(instanceType)); runInstancesRequest.setImageId(instanceAmi); runInstancesRequest.setMinCount(1); runInstancesRequest.setMaxCount(1); KeyPair keyPair = createKeyPair(); String privateKey = keyPair.getKeyMaterial(); String fileName; try { fileName = saveKeyFile(keyPair.getKeyName(), privateKey); } catch (FileNotFoundException e) { throw new AmazonServiceException("Could not create the key file"); } catch (UnsupportedEncodingException e) { throw new AmazonServiceException("Could not create the key file"); } runInstancesRequest.setKeyName(keyPair.getKeyName()); CreateSecurityGroupResult securityGroupResult = createSecurityGroupWithRules(); Collection securityGroupIds = new ArrayList(); securityGroupIds.add(securityGroupResult.getGroupId()); runInstancesRequest.setSecurityGroupIds(securityGroupIds); amazonEC2.runInstances(runInstancesRequest); return new Status("Server has been started", fileName); }