List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest setSecurityGroups
public void setSecurityGroups(java.util.Collection<String> securityGroups)
[EC2-Classic, default VPC] The names of the security groups.
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 www. ja va2s .c o m 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.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;// www . j av a 2s .c o 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.hpcloud.daas.ec2.AwsConsoleApp.java
License:Open Source License
public static void CreateNewInstance(String imageId, String instanceType, List<String> securityGroups, String userData) {//from ww w . jav a 2s . c om try { RunInstancesRequest crir = new RunInstancesRequest(); crir.setImageId(imageId); crir.setInstanceType(instanceType); crir.setSecurityGroups(securityGroups); crir.setKeyName("hpdefault"); if (userData != null) { crir.setUserData(userData); } RunInstancesResult result = ec2.runInstances(crir); System.out.println(result); String instanceId = null; List<Instance> instances = result.getReservation().getInstances(); for (Instance instance : instances) { instanceId = instance.getInstanceId(); } // HACKHACK sleep for 5 seconds so the private ip gets assigned System.out.println("Sleeping for 5 to wait for the private ip"); try { Thread.sleep(5000); } catch (InterruptedException ignore) { ignore.printStackTrace(); } String publicIp = assignPublicIp(instanceId); System.out.println("Public IP: " + publicIp); System.out.println("Instance State: " + getInstanceState(instanceId)); } catch (AmazonServiceException ase) { System.out.println("Caught Exception: " + ase.getMessage()); System.out.println("Reponse Status Code: " + ase.getStatusCode()); System.out.println("Error Code: " + ase.getErrorCode()); System.out.println("Request ID: " + ase.getRequestId()); } }
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. /* www. ja va 2 s. c om*/ * * @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.yosanai.java.aws.console.DefaultAWSConnectionProvider.java
License:Open Source License
@Override public void launchInstance(String amiId, InstanceType instanceType, int instanceCount, String keyName, Collection<String> securityGroups, boolean terminateViaAPI, Map<String, String> tags) throws Exception { if (1 > instanceCount) { throw new Exception("Invalid instanceCount " + instanceCount); }/* w w w .j av a 2s. c o m*/ if (null == instanceType) { throw new Exception("Invalid instanceType"); } if (StringUtils.isBlank(amiId)) { throw new Exception("Invalid amiId"); } RunInstancesRequest runInstancesRequest = new RunInstancesRequest(amiId, instanceCount, instanceCount); runInstancesRequest.setKeyName(keyName); runInstancesRequest.setSecurityGroups(securityGroups); runInstancesRequest.setDisableApiTermination(!terminateViaAPI); runInstancesRequest.setInstanceType(instanceType.toString()); RunInstancesResult result = getConnection().runInstances(runInstancesRequest); if (null != tags && !tags.isEmpty()) { List<Tag> tagList = new ArrayList<Tag>(); for (String key : tags.keySet()) { tagList.add(new Tag(key, tags.get(key))); } List<String> resources = new ArrayList<String>(); Reservation reservation = result.getReservation(); for (Instance instance : reservation.getInstances()) { resources.add(instance.getInstanceId()); } getConnection().createTags(new CreateTagsRequest(resources, tagList)); } }
From source file:datameer.awstasks.ant.ec2.Ec2LaunchTask.java
License:Apache License
@Override public void doExecute(AmazonEC2 ec2) throws BuildException { LOG.info("executing " + getClass().getSimpleName() + " with groupName '" + _groupName + "'"); try {/*from w w w. ja va 2 s . c o m*/ boolean instancesRunning = Ec2Util.findByGroup(ec2, _groupName, false, InstanceStateName.Pending, InstanceStateName.Running) != null; if (!isReuseRunningInstances() && instancesRunning) { throw new IllegalStateException("found already running instances for group '" + _groupName + "'"); } if (!Ec2Util.groupExists(ec2, _groupName)) { LOG.info("group '" + _groupName + "' does not exists - creating it"); String groupDescription = getGroupDescription(); if (groupDescription == null) { throw new BuildException("must specify groupDescription"); } ec2.createSecurityGroup(new CreateSecurityGroupRequest(_groupName, groupDescription)); } List<String> securityGroups = Arrays.asList("default", _groupName); List<IpPermission> existingPermissions = Ec2Util.getPermissions(ec2, securityGroups); for (GroupPermission groupPermission : _groupPermissions) { if (groupPermission.getToPort() == -1) { groupPermission.setToPort(groupPermission.getFromPort()); } if (!permissionExists(groupPermission, existingPermissions)) { LOG.info("did not found permission '" + groupPermission + "' - creating it..."); ec2.authorizeSecurityGroupIngress(new AuthorizeSecurityGroupIngressRequest() .withGroupName(_groupName).withIpPermissions(groupPermission.toIpPermission())); } } InstanceGroup instanceGroup = new InstanceGroupImpl(ec2); RunInstancesRequest launchConfiguration = new RunInstancesRequest(_ami, _instanceCount, _instanceCount); if (_kernelId != null) { launchConfiguration.setKernelId(_kernelId); } if (_ramDiskId != null) { launchConfiguration.setKernelId(_ramDiskId); } launchConfiguration.setKeyName(_privateKeyName); launchConfiguration.setSecurityGroups(securityGroups); if (_userData != null) { launchConfiguration.setUserData(Base64.encodeBase64String(_userData.getBytes())); } if (_instanceType != null) { launchConfiguration.setInstanceType(_instanceType); } launchConfiguration.setPlacement(new Placement(_availabilityZone)); if (instancesRunning) { instanceGroup.connectTo(_groupName); } else { instanceGroup.launch(launchConfiguration, TimeUnit.MINUTES, _maxStartTime); if (_instanceName != null) { LOG.info("tagging instances with name '" + _instanceName + " [<idx>]'"); int idx = 1; for (Instance instance : instanceGroup.getInstances(false)) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) // .withTags(new Tag("Name", _instanceName + " [" + idx + "]")); ec2.createTags(createTagsRequest); idx++; } } } } catch (Exception e) { LOG.error("execution " + getClass().getSimpleName() + " with groupName '" + _groupName + "' failed: " + e.getMessage()); throw new BuildException(e); } }
From source file:edu.umass.cs.aws.support.AWSEC2.java
License:Apache License
/** * Create an Instance/*from w w w .ja v a 2 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:elasticity.services.AmazonService.java
License:Open Source License
/** * Runs a VM instance on an EC2 compatible cloud. * //w w w.j a v a 2 s . c om * @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:hudson.plugins.ec2.SlaveTemplate.java
License:Open Source License
/** * Provisions an On-demand EC2 slave by launching a new instance or * starting a previously-stopped instance. *///from w ww .j a va 2s .c om private EC2AbstractSlave provisionOndemand(TaskListener listener) throws AmazonClientException, IOException { PrintStream logger = listener.getLogger(); AmazonEC2 ec2 = getParent().connect(); try { String msg = "Launching " + ami + " for template " + description; logger.println(msg); LOGGER.info(msg); KeyPair keyPair = getKeyPair(ec2); RunInstancesRequest riRequest = new RunInstancesRequest(ami, 1, 1); InstanceNetworkInterfaceSpecification net = new InstanceNetworkInterfaceSpecification(); if (useEphemeralDevices) { setupEphemeralDeviceMapping(riRequest); } else { setupCustomDeviceMapping(riRequest); } List<Filter> diFilters = new ArrayList<Filter>(); diFilters.add(new Filter("image-id").withValues(ami)); if (StringUtils.isNotBlank(getZone())) { Placement placement = new Placement(getZone()); if (getUseDedicatedTenancy()) { placement.setTenancy("dedicated"); } riRequest.setPlacement(placement); diFilters.add(new Filter("availability-zone").withValues(getZone())); } if (StringUtils.isNotBlank(getSubnetId())) { if (getAssociatePublicIp()) { net.setSubnetId(getSubnetId()); } else { riRequest.setSubnetId(getSubnetId()); } diFilters.add(new Filter("subnet-id").withValues(getSubnetId())); /* If we have a subnet ID then we can only use VPC security groups */ if (!securityGroupSet.isEmpty()) { List<String> group_ids = getEc2SecurityGroups(ec2); if (!group_ids.isEmpty()) { if (getAssociatePublicIp()) { net.setGroups(group_ids); } else { riRequest.setSecurityGroupIds(group_ids); } diFilters.add(new Filter("instance.group-id").withValues(group_ids)); } } } else { /* No subnet: we can use standard security groups by name */ riRequest.setSecurityGroups(securityGroupSet); if (securityGroupSet.size() > 0) diFilters.add(new Filter("instance.group-name").withValues(securityGroupSet)); } String userDataString = Base64.encodeBase64String(userData.getBytes()); riRequest.setUserData(userDataString); riRequest.setKeyName(keyPair.getKeyName()); diFilters.add(new Filter("key-name").withValues(keyPair.getKeyName())); riRequest.setInstanceType(type.toString()); diFilters.add(new Filter("instance-type").withValues(type.toString())); if (getAssociatePublicIp()) { net.setAssociatePublicIpAddress(true); net.setDeviceIndex(0); riRequest.withNetworkInterfaces(net); } boolean hasCustomTypeTag = false; HashSet<Tag> inst_tags = null; if (tags != null && !tags.isEmpty()) { inst_tags = new HashSet<Tag>(); for (EC2Tag t : tags) { inst_tags.add(new Tag(t.getName(), t.getValue())); diFilters.add(new Filter("tag:" + t.getName()).withValues(t.getValue())); if (StringUtils.equals(t.getName(), EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE)) { hasCustomTypeTag = true; } } } if (!hasCustomTypeTag) { if (inst_tags == null) { inst_tags = new HashSet<Tag>(); } inst_tags.add(new Tag(EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE, "demand")); } DescribeInstancesRequest diRequest = new DescribeInstancesRequest(); diFilters.add(new Filter("instance-state-name").withValues(InstanceStateName.Stopped.toString(), InstanceStateName.Stopping.toString())); diRequest.setFilters(diFilters); msg = "Looking for existing instances with describe-instance: " + diRequest; logger.println(msg); LOGGER.fine(msg); DescribeInstancesResult diResult = ec2.describeInstances(diRequest); Instance existingInstance = null; if (StringUtils.isNotBlank(getIamInstanceProfile())) { riRequest.setIamInstanceProfile( new IamInstanceProfileSpecification().withArn(getIamInstanceProfile())); // cannot filter on IAM Instance Profile, so search in result reservationLoop: for (Reservation reservation : diResult.getReservations()) { for (Instance instance : reservation.getInstances()) { if (instance.getIamInstanceProfile() != null && instance.getIamInstanceProfile().getArn().equals(getIamInstanceProfile())) { existingInstance = instance; break reservationLoop; } } } } else if (diResult.getReservations().size() > 0) { existingInstance = diResult.getReservations().get(0).getInstances().get(0); } if (existingInstance == null) { // Have to create a new instance Instance inst = ec2.runInstances(riRequest).getReservation().getInstances().get(0); /* Now that we have our instance, we can set tags on it */ if (inst_tags != null) { for (int i = 0; i < 5; i++) { try { updateRemoteTags(ec2, inst_tags, inst.getInstanceId()); break; } catch (AmazonServiceException e) { if (e.getErrorCode().equals("InvalidInstanceRequestID.NotFound")) { Thread.sleep(5000); continue; } throw e; } } // That was a remote request - we should also update our local instance data. inst.setTags(inst_tags); } msg = "No existing instance found - created: " + inst; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(inst); } msg = "Found existing stopped instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); List<String> instances = new ArrayList<String>(); instances.add(existingInstance.getInstanceId()); StartInstancesRequest siRequest = new StartInstancesRequest(instances); StartInstancesResult siResult = ec2.startInstances(siRequest); msg = "Starting existing instance: " + existingInstance + " result:" + siResult; logger.println(msg); LOGGER.fine(msg); for (EC2AbstractSlave ec2Node : NodeIterator.nodes(EC2AbstractSlave.class)) { if (ec2Node.getInstanceId().equals(existingInstance.getInstanceId())) { msg = "Found existing corresponding Jenkins slave: " + ec2Node; logger.println(msg); LOGGER.finer(msg); return ec2Node; } } // Existing slave not found msg = "Creating new Jenkins slave for existing instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(existingInstance); } catch (FormException e) { throw new AssertionError(); // we should have discovered all configuration issues upfront } catch (InterruptedException e) { throw new RuntimeException(e); } }
From source file:integratedtoolkit.connectors.amazon.EC2.java
License:Apache License
private RunInstancesResult createMachine(String instanceCode, String diskImage) throws InterruptedException { //Create/*from w w w. j a va 2s .c o m*/ RunInstancesRequest runInstancesRequest = new RunInstancesRequest(diskImage, 1, 1); Placement placement = new Placement(placementCode); runInstancesRequest.setPlacement(placement); runInstancesRequest.setInstanceType(instanceCode); runInstancesRequest.setKeyName(keyPairName); ArrayList<String> groupId = new ArrayList<String>(); groupId.add(securityGroupName); runInstancesRequest.setSecurityGroups(groupId); return client.runInstances(runInstancesRequest); }