List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest withMaxCount
public RunInstancesRequest withMaxCount(Integer maxCount)
The maximum number of instances to launch.
From source file:com.kpbird.aws.Main.java
private void createEC2OnDemandInstance() { try {/*from w w w. j a v a 2s. c om*/ // request for new on demand instance RunInstancesRequest rir = new RunInstancesRequest(); rir.withImageId(imageId); rir.withInstanceType(instanceType); rir.withMinCount(1); rir.withMaxCount(1); rir.withKeyName(keyName); rir.withMonitoring(true); rir.withSecurityGroups(groupName); RunInstancesResult riresult = ec2client.runInstances(rir); log.Info(riresult.getReservation().getReservationId()); /// Find newly created instance id String instanceId = null; DescribeInstancesResult result = ec2client.describeInstances(); Iterator<Reservation> i = result.getReservations().iterator(); while (i.hasNext()) { Reservation r = i.next(); List<Instance> instances = r.getInstances(); for (Instance ii : instances) { log.Info(ii.getImageId() + "\t" + ii.getInstanceId() + "\t" + ii.getState().getName() + "\t" + ii.getPrivateDnsName()); if (ii.getState().getName().equals("pending")) { instanceId = ii.getInstanceId(); } } } log.Info("New Instance ID :" + instanceId); /// Waiting for Instance Running//// boolean isWaiting = true; while (isWaiting) { log.Info("*** Waiting ***"); Thread.sleep(1000); DescribeInstancesResult r = ec2client.describeInstances(); Iterator<Reservation> ir = r.getReservations().iterator(); while (ir.hasNext()) { Reservation rr = ir.next(); List<Instance> instances = rr.getInstances(); for (Instance ii : instances) { log.Info(ii.getImageId() + "\t" + ii.getInstanceId() + "\t" + ii.getState().getName() + "\t" + ii.getPrivateDnsName()); if (ii.getState().getName().equals("running") && ii.getInstanceId().equals(instanceId)) { log.Info(ii.getPublicDnsName()); isWaiting = false; } } } } /// Creating Tag for New Instance //// log.Info("Creating Tags for New Instance"); CreateTagsRequest crt = new CreateTagsRequest(); ArrayList<Tag> arrTag = new ArrayList<Tag>(); arrTag.add(new Tag().withKey("Name").withValue(instanceName)); crt.setTags(arrTag); ArrayList<String> arrInstances = new ArrayList<String>(); arrInstances.add(instanceId); crt.setResources(arrInstances); ec2client.createTags(crt); } catch (Exception e) { e.printStackTrace(); System.exit(0); } }
From source file:jp.primecloud.auto.process.aws.AwsInstanceProcess.java
License:Open Source License
public void run(AwsProcessClient awsProcessClient, Long instanceNo) { Instance instance = instanceDao.read(instanceNo); AwsInstance awsInstance = awsInstanceDao.read(instanceNo); ImageAws imageAws = imageAwsDao.read(instance.getImageNo()); PlatformAws platformAws = awsProcessClient.getPlatformAws(); // ?/* w w w .j a va2 s . co m*/ RunInstancesRequest request = new RunInstancesRequest(); request.withMinCount(1); request.withMaxCount(1); request.withImageId(imageAws.getImageId()); request.withKernelId(StringUtils.isEmpty(imageAws.getKernelId()) ? null : imageAws.getKernelId()); request.withRamdiskId(StringUtils.isEmpty(imageAws.getRamdiskId()) ? null : imageAws.getRamdiskId()); request.withKeyName(awsInstance.getKeyName()); request.withInstanceType(awsInstance.getInstanceType()); // UserData Map<String, String> userData = createUserData(instanceNo); request.withUserData(encodeUserData(userData)); // ?VPC?? if (BooleanUtils.isNotTrue(platformAws.getVpc())) { // AvailabilityZone if (StringUtils.isNotEmpty(awsInstance.getAvailabilityZone())) { request.withPlacement(new Placement(awsInstance.getAvailabilityZone())); } // SecurityGroup if (StringUtils.isNotEmpty(awsInstance.getSecurityGroups())) { for (String groupName : StringUtils.split(awsInstance.getSecurityGroups(), ",")) { request.withSecurityGroups(groupName.trim()); } } } // VPC?? else { // Subnet request.withSubnetId(awsInstance.getSubnetId()); // SecurytiGroup List<SecurityGroup> securityGroups = awsCommonProcess.describeSecurityGroupsByVpcId(awsProcessClient, platformAws.getVpcId()); for (String groupName : StringUtils.split(awsInstance.getSecurityGroups(), ",")) { groupName = groupName.trim(); for (SecurityGroup securityGroup : securityGroups) { if (StringUtils.equals(groupName, securityGroup.getGroupName())) { request.withSecurityGroupIds(securityGroup.getGroupId()); break; } } } // PrivateIpAddress if (StringUtils.isNotEmpty(awsInstance.getPrivateIpAddress())) { request.withPrivateIpAddress(awsInstance.getPrivateIpAddress()); } } // BlockDeviceMapping List<BlockDeviceMapping> blockDeviceMappings = createBlockDeviceMappings(awsProcessClient, imageAws, awsInstance); request.withBlockDeviceMappings(blockDeviceMappings); // processLogger.debug(null, instance, "AwsInstanceCreate", new Object[] { awsProcessClient.getPlatform().getPlatformName() }); // ?? RunInstancesResult result = awsProcessClient.getEc2Client().runInstances(request); Reservation reservation = result.getReservation(); if (reservation == null || reservation.getInstances().size() != 1) { // ? throw new AutoException("EPROCESS-000105"); } com.amazonaws.services.ec2.model.Instance instance2 = reservation.getInstances().get(0); // if (log.isInfoEnabled()) { log.info(MessageUtils.getMessage("IPROCESS-100115", instance2.getInstanceId())); } // awsInstance.setInstanceId(instance2.getInstanceId()); awsInstance.setStatus(instance2.getState().getName()); awsInstanceDao.update(awsInstance); }
From source file:org.cloudifysource.esc.driver.provisioning.privateEc2.PrivateEC2CloudifyDriver.java
License:Open Source License
private Instance createEC2Instance(final PrivateEc2Template cfnTemplate, final ProvisioningContextImpl ctx, final boolean management, final String machineName, final long duration, final TimeUnit unit) throws CloudProvisioningException, TimeoutException { final InstanceProperties properties = cfnTemplate.getEC2Instance().getProperties(); final String availabilityZone = properties.getAvailabilityZone() == null ? null : properties.getAvailabilityZone().getValue(); final Placement placement = availabilityZone == null ? null : new Placement(availabilityZone); final String imageId = properties.getImageId() == null ? null : properties.getImageId().getValue(); final String instanceType = properties.getInstanceType() == null ? null : properties.getInstanceType().getValue(); final String keyName = properties.getKeyName() == null ? null : properties.getKeyName().getValue(); final String privateIpAddress = properties.getPrivateIpAddress() == null ? null : properties.getPrivateIpAddress().getValue(); final List<String> securityGroupIds = properties.getSecurityGroupIdsAsString(); final List<String> securityGroups = properties.getSecurityGroupsAsString(); S3Object s3Object = null; try {//from w ww . ja v a 2s .co m String userData = null; if (properties.getUserData() != null) { // Generate ENV script for the provisioned machine final StringBuilder sb = new StringBuilder(); final String script = management ? this.generateManagementCloudifyEnv(ctx) : this.generateCloudifyEnv(ctx); s3Object = this.uploadCloudDir(ctx, script, management); final String cloudFileS3 = this.amazonS3Uploader.generatePresignedURL(s3Object); ComputeTemplate template = this.getManagerComputeTemplate(); String cloudFileDir = (String) template.getRemoteDirectory(); // Remove '/' from the path if it's the last char. if (cloudFileDir.length() > 1 && cloudFileDir.endsWith("/")) { cloudFileDir = cloudFileDir.substring(0, cloudFileDir.length() - 1); } final String endOfLine = " >> /tmp/cloud.txt\n"; sb.append("#!/bin/bash\n"); sb.append("export TMP_DIRECTORY=/tmp").append(endOfLine); sb.append("export S3_ARCHIVE_FILE='" + cloudFileS3 + "'").append(endOfLine); sb.append("wget -q -O $TMP_DIRECTORY/cloudArchive.tar.gz $S3_ARCHIVE_FILE").append(endOfLine); sb.append("mkdir -p " + cloudFileDir).append(endOfLine); sb.append("tar zxvf $TMP_DIRECTORY/cloudArchive.tar.gz -C " + cloudFileDir).append(endOfLine); sb.append("rm -f $TMP_DIRECTORY/cloudArchive.tar.gz").append(endOfLine); sb.append("echo ").append(cloudFileDir).append("/").append(CLOUDIFY_ENV_SCRIPT).append(endOfLine); sb.append("chmod 755 ").append(cloudFileDir).append("/").append(CLOUDIFY_ENV_SCRIPT) .append(endOfLine); sb.append("source ").append(cloudFileDir).append("/").append(CLOUDIFY_ENV_SCRIPT).append(endOfLine); sb.append(properties.getUserData().getValue()); userData = sb.toString(); logger.fine("Instanciate ec2 with user data:\n" + userData); userData = StringUtils.newStringUtf8(Base64.encodeBase64(userData.getBytes())); } List<BlockDeviceMapping> blockDeviceMappings = null; AWSEC2Volume volumeConfig = null; if (properties.getVolumes() != null) { blockDeviceMappings = new ArrayList<BlockDeviceMapping>(properties.getVolumes().size()); for (final VolumeMapping volMapping : properties.getVolumes()) { volumeConfig = cfnTemplate.getEC2Volume(volMapping.getVolumeId().getValue()); blockDeviceMappings .add(this.createBlockDeviceMapping(volMapping.getDevice().getValue(), volumeConfig)); } } final RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.withPlacement(placement); runInstancesRequest.withImageId(imageId); runInstancesRequest.withInstanceType(instanceType); runInstancesRequest.withKeyName(keyName); runInstancesRequest.withPrivateIpAddress(privateIpAddress); runInstancesRequest.withSecurityGroupIds(securityGroupIds); runInstancesRequest.withSecurityGroups(securityGroups); runInstancesRequest.withMinCount(1); runInstancesRequest.withMaxCount(1); runInstancesRequest.withBlockDeviceMappings(blockDeviceMappings); runInstancesRequest.withUserData(userData); if (logger.isLoggable(Level.FINEST)) { logger.finest("EC2::Instance request=" + runInstancesRequest); } final RunInstancesResult runInstances = this.ec2.runInstances(runInstancesRequest); if (runInstances.getReservation().getInstances().size() != 1) { throw new CloudProvisioningException( "Request runInstace fails (request=" + runInstancesRequest + ")."); } Instance ec2Instance = runInstances.getReservation().getInstances().get(0); ec2Instance = this.waitRunningInstance(ec2Instance, duration, unit); this.tagEC2Instance(ec2Instance, machineName, cfnTemplate.getEC2Instance()); this.tagEC2Volumes(ec2Instance.getInstanceId(), cfnTemplate); this.waitRunningAgent(ec2Instance.getPublicIpAddress(), duration, unit); return ec2Instance; } finally { if (s3Object != null) { this.amazonS3Uploader.deleteS3Object(s3Object.getBucketName(), s3Object.getKey()); } } }