List of usage examples for com.amazonaws.services.autoscaling.model CreateLaunchConfigurationRequest CreateLaunchConfigurationRequest
CreateLaunchConfigurationRequest
From source file:AwsAuto.java
License:Open Source License
public static void main(String[] args) throws Exception { // initialize/determine parameters String instanceType = "m3.medium"; String loadGeneratorAmi = "ami-8ac4e9e0"; String dataCenterAmi = "ami-349fbb5e"; String bidPrice = "0.1"; String loadGeneratorDns = null; // load generator DNS String dashboardUrl = null; // the URL where we check our performance String testId = null;/*from w ww . ja v a 2 s .c o m*/ // create project tag for instances ArrayList<com.amazonaws.services.ec2.model.Tag> loadGeneratorTags = new ArrayList<>(); com.amazonaws.services.ec2.model.Tag loadGeneratorTag = new com.amazonaws.services.ec2.model.Tag("Project", "2.1"); loadGeneratorTags.add(loadGeneratorTag); // create project tag for auto-scaling com.amazonaws.services.autoscaling.model.Tag asgTag = new com.amazonaws.services.autoscaling.model.Tag(); asgTag.setKey("Project"); asgTag.setValue("2.1"); // create project tag for load balancer ArrayList<com.amazonaws.services.elasticloadbalancing.model.Tag> loadBalancerTags = new ArrayList<>(); com.amazonaws.services.elasticloadbalancing.model.Tag loadBalancerTag = new com.amazonaws.services.elasticloadbalancing.model.Tag(); loadBalancerTag.setKey("Project"); loadBalancerTag.setValue("2.1"); loadBalancerTags.add(loadBalancerTag); /** * ========================================================================= * ================= Create security groups * ========================================================================= * ================= */ String loadGeneratorSecurityName = "LoadGeneratorSGP2"; String allPurposeSecurityName = "AllPurposeSGP2"; SecurityGroup loadGeneratorSecurityGroup = new SecurityGroup(loadGeneratorSecurityName); SecurityGroup allPurposeSecurityGroup = new SecurityGroup(allPurposeSecurityName); /** * ========================================================================= * ================= Grant permission and credentials * ========================================================================= * ================= */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("School").getCredentials(); } 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\\Jiabei\\.aws\\credentials), and is in valid format.", e); } // set region AmazonEC2 ec2 = new AmazonEC2Client(credentials); Region usEast1 = Region.getRegion(Regions.US_EAST_1); ec2.setRegion(usEast1); /** * ========================================================================= * ================= Create a load generator and submit password * ========================================================================= * ================= */ Requests requestsLg = new Requests(instanceType, loadGeneratorAmi, bidPrice, loadGeneratorSecurityName, loadGeneratorTags); loadGeneratorDns = requestsLg.submitRequests(); String submissionUrl = "http://" + loadGeneratorDns + "/password?passwd=0WSb4ufhYI7SkxfLWnnIWU0MC1NdcNKT&andrewId=jiabeip"; sendGET(submissionUrl); try { /** * ======================================================================= * =================== Create a load balancer * ======================================================================= * =================== */ String loadBalancerDns = null; String loadBalancerName = "LoadBalancerProj2"; String healthCheckPage = "/heartbeat?lg=" + loadGeneratorDns; AmazonElasticLoadBalancingClient loadBalancerClient = new AmazonElasticLoadBalancingClient(credentials); // configure a request CreateLoadBalancerRequest loadBalancerRequest = new CreateLoadBalancerRequest() .withAvailabilityZones("us-east-1b").withListeners(new Listener("HTTP", 80, 80)) .withLoadBalancerName(loadBalancerName).withSecurityGroups(allPurposeSecurityGroup.getGroupId()) .withTags(loadBalancerTags); CreateLoadBalancerResult loadBalancerResult = loadBalancerClient .createLoadBalancer(loadBalancerRequest); loadBalancerDns = loadBalancerResult.getDNSName(); // configure health check setting HealthCheck loadBalancerHealthCheck = new HealthCheck().withTarget("HTTP:80" + healthCheckPage) .withTimeout(5).withInterval(30).withUnhealthyThreshold(2).withHealthyThreshold(10); ConfigureHealthCheckRequest healthCheckRequest = new ConfigureHealthCheckRequest() .withLoadBalancerName(loadBalancerName).withHealthCheck(loadBalancerHealthCheck); // attach health check setting to load balancer ConfigureHealthCheckResult healthCheckResult = loadBalancerClient .configureHealthCheck(healthCheckRequest); System.out.println("Load balancer created!\nDNS: " + loadBalancerDns); /** * ======================================================================= * =================== Create launch configuration * ======================================================================= * =================== */ String launchConfigName = "LaunchConfigProj2"; String autoScalingGroupName = "AutoScalingGroupProj2"; AmazonAutoScalingClient autoScalingGroupClient = new AmazonAutoScalingClient(credentials); AmazonCloudWatchClient cloudWatchClient = new AmazonCloudWatchClient(credentials); System.out.println("Creating launch configuration..."); // configure the request CreateLaunchConfigurationRequest launchConfigRequest = new CreateLaunchConfigurationRequest() .withImageId(dataCenterAmi).withInstanceType(instanceType) .withLaunchConfigurationName(launchConfigName) .withSecurityGroups(allPurposeSecurityGroup.getGroupId()).withSpotPrice(bidPrice) .withKeyName("primary"); // enable detail monitoring InstanceMonitoring monitor = new InstanceMonitoring(); monitor.setEnabled(true); launchConfigRequest.setInstanceMonitoring(monitor); // attach the configuration to the ASG client autoScalingGroupClient.createLaunchConfiguration(launchConfigRequest); System.out.println("Configuration complete!\nCreating auto-scaling group..."); /** * ======================================================================= * =================== Create auto-scaling group * ======================================================================= * =================== */ // configure ASG request CreateAutoScalingGroupRequest asgRequest = new CreateAutoScalingGroupRequest() .withAutoScalingGroupName(autoScalingGroupName).withAvailabilityZones("us-east-1b") .withLoadBalancerNames(loadBalancerName).withNewInstancesProtectedFromScaleIn(false) .withTags(asgTag).withDefaultCooldown(120).withMinSize(1).withMaxSize(8).withDesiredCapacity(1) // Start // from // one .withHealthCheckGracePeriod(120).withHealthCheckType("ELB") .withLaunchConfigurationName(launchConfigName); // attach group configuration to ASG client autoScalingGroupClient.createAutoScalingGroup(asgRequest); /** * ======================================================================= * =================== Create scaling up policy for ASG * ======================================================================= * =================== */ StepAdjustment upRule1 = new StepAdjustment().withMetricIntervalLowerBound(0.0) .withMetricIntervalUpperBound(25.0).withScalingAdjustment(1); StepAdjustment upRule2 = new StepAdjustment().withMetricIntervalLowerBound(25.0) .withMetricIntervalUpperBound(30.0).withScalingAdjustment(2); StepAdjustment upRule3 = new StepAdjustment().withMetricIntervalLowerBound(30.0) .withMetricIntervalUpperBound(null).withScalingAdjustment(3); String upPolicyName = "Scaling Up"; PutScalingPolicyRequest scalingUpPolicy = new PutScalingPolicyRequest() .withAdjustmentType("ChangeInCapacity").withPolicyType("StepScaling") .withStepAdjustments(upRule1, upRule2, upRule3).withAutoScalingGroupName(autoScalingGroupName) .withPolicyName(upPolicyName).withEstimatedInstanceWarmup(120); StepAdjustment downRule1 = new StepAdjustment().withMetricIntervalLowerBound(-20.0) .withMetricIntervalUpperBound(-0.0).withScalingAdjustment(-1); StepAdjustment downRule2 = new StepAdjustment().withMetricIntervalLowerBound(-30.0) .withMetricIntervalUpperBound(-20.0).withScalingAdjustment(-2); StepAdjustment downRule3 = new StepAdjustment().withMetricIntervalLowerBound(null) .withMetricIntervalUpperBound(-30.0).withScalingAdjustment(-3); String downPolicyName = "Scaling Down"; PutScalingPolicyRequest scalingDownPolicy = new PutScalingPolicyRequest().withAdjustmentType("") .withPolicyType("ChangeInCapacity").withStepAdjustments(downRule1, downRule2, downRule3) .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(downPolicyName) .withEstimatedInstanceWarmup(60); // attach policies to ASG and get ARN for setting alarm PutScalingPolicyResult scaleUpResult = autoScalingGroupClient.putScalingPolicy(scalingUpPolicy); String upArn = scaleUpResult.getPolicyARN(); PutScalingPolicyResult scaleDownResult = autoScalingGroupClient.putScalingPolicy(scalingDownPolicy); String downArn = scaleDownResult.getPolicyARN(); /** * ======================================================================= * =================== Create alarms for policies * ======================================================================= * =================== */ String upAlarmName = "UpAlarm_Mild"; String downAlarmName = "DownAlarm_Mild"; Dimension dimension = new Dimension(); dimension.setName("AutoScalingGroupName"); dimension.setValue(autoScalingGroupName); PutMetricAlarmRequest upAlarmRequest = new PutMetricAlarmRequest().withAlarmName(upAlarmName) .withMetricName("CPUUtilization").withNamespace("AWS/EC2").withDimensions(dimension) .withStatistic(Statistic.SampleCount) .withComparisonOperator(ComparisonOperator.GreaterThanOrEqualToThreshold).withThreshold(65.0) .withEvaluationPeriods(1).withPeriod(120).withAlarmActions(upArn); PutMetricAlarmRequest downAlarmRequest = new PutMetricAlarmRequest().withAlarmName(downAlarmName) .withNamespace("AWS/EC2").withDimensions(dimension).withMetricName("CPUUtilization") .withStatistic(Statistic.Average) .withComparisonOperator(ComparisonOperator.LessThanOrEqualToThreshold).withThreshold(60.0) .withEvaluationPeriods(1).withPeriod(120).withAlarmActions(downArn); cloudWatchClient.putMetricAlarm(upAlarmRequest); cloudWatchClient.putMetricAlarm(downAlarmRequest); System.out.println("All settings complete! \nReady for warmup..."); /** * ======================================================================= * =================== Warm up ELB * ======================================================================= * =================== */ String warmUpUrl = "http://" + loadGeneratorDns + "/warmup?dns=" + loadBalancerDns; sendGET(warmUpUrl); System.out.println("Warmup link: " + warmUpUrl); try { Thread.sleep(15 * 60 * 1000); } catch (Exception e) { e.printStackTrace(); } System.out.println("Warmup complete!\nReady for battle..."); /** * ======================================================================= * =================== Start the test * ======================================================================= * =================== */ String testUrl = "http://" + loadGeneratorDns + "/junior?dns=" + loadBalancerDns; testId = sendGET(testUrl); System.out.println("Test ID is: " + testId); System.out.println("Test link: " + testUrl); try { Thread.sleep(60 * 60 * 1000); } catch (Exception e) { e.printStackTrace(); } System.out.println("Test finished!"); /** * ======================================================================= * =================== Delete resources * ======================================================================= * =================== */ // clear ASG UpdateAutoScalingGroupRequest asgClearRequest = new UpdateAutoScalingGroupRequest() .withAutoScalingGroupName(autoScalingGroupName).withMaxSize(0).withMinSize(0); autoScalingGroupClient.updateAutoScalingGroup(asgClearRequest); // delete policies DeletePolicyRequest upPolicyDeleteRequest = new DeletePolicyRequest() .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(upPolicyName); autoScalingGroupClient.deletePolicy(upPolicyDeleteRequest); DeletePolicyRequest downPolicyDeleteRequest = new DeletePolicyRequest() .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(downPolicyName); autoScalingGroupClient.deletePolicy(downPolicyDeleteRequest); System.out.println("Policies deleted..."); // delete alarms DeleteAlarmsRequest alarmsDeleteRequest = new DeleteAlarmsRequest().withAlarmNames(upAlarmName, downAlarmName); cloudWatchClient.deleteAlarms(alarmsDeleteRequest); System.out.println("Alarms deleted..."); // delete load balancer DeleteLoadBalancerRequest lgDeleteRequest = new DeleteLoadBalancerRequest() .withLoadBalancerName(loadBalancerName); loadBalancerClient.deleteLoadBalancer(lgDeleteRequest); System.out.println("Load generator deleted..."); // delete ASG DeleteAutoScalingGroupRequest asgDeleteRequest = new DeleteAutoScalingGroupRequest() .withForceDelete(true).withAutoScalingGroupName(autoScalingGroupName); autoScalingGroupClient.deleteAutoScalingGroup(asgDeleteRequest); System.out.println("ASG deleted..."); // delete launch configuration DeleteLaunchConfigurationRequest launchConfigDeleteRequest = new DeleteLaunchConfigurationRequest() .withLaunchConfigurationName(launchConfigName); autoScalingGroupClient.deleteLaunchConfiguration(launchConfigDeleteRequest); System.out.println("Launch configuration deleted..."); // delete security group DeleteSecurityGroupRequest sgDeleteRequest = new DeleteSecurityGroupRequest() .withGroupName(allPurposeSecurityName); ec2.deleteSecurityGroup(sgDeleteRequest); System.out.println("Security group deleted..."); /** * ======================================================================= * =================== All done * ======================================================================= * =================== */ System.out.println("All done :)"); } catch (AmazonServiceException ase) { // Write out any exceptions that may have occurred. 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()); } catch (Exception e) { System.out.println("Unexcepted error!"); System.out.println(e.getMessage()); } }
From source file:virtualIT.java
License:Open Source License
private static void createLaunchConfiguration(int user) { System.out.println("Launching Configuration"); ///*from w ww . j a va 2 s . co m*/ DescribeLaunchConfigurationsRequest describeLaunchConfigurationsRequest = new DescribeLaunchConfigurationsRequest(); describeLaunchConfigurationsRequest.withLaunchConfigurationNames(LAUNCH_CONFIGURATION); DescribeLaunchConfigurationsResult describeLaunchConfigurationResult = autoScaleClient .describeLaunchConfigurations(describeLaunchConfigurationsRequest); List<LaunchConfiguration> configs = describeLaunchConfigurationResult.getLaunchConfigurations(); // launch config already exists if (configs.size() != 0) return; CreateLaunchConfigurationRequest createLaunchConfigurationRequest = new CreateLaunchConfigurationRequest(); createLaunchConfigurationRequest.withLaunchConfigurationName(LAUNCH_CONFIGURATION) .withImageId("ami-ab844dc2").withInstanceType("t1.micro").withKeyName(keyName) .withSecurityGroups(securityGroupName); autoScaleClient.createLaunchConfiguration(createLaunchConfigurationRequest); }
From source file:com.pinterest.arcee.autoscaling.AwsAutoScaleGroupManager.java
License:Apache License
@Override public String createLaunchConfig(GroupBean request) throws Exception { CreateLaunchConfigurationRequest configurationRequest = new CreateLaunchConfigurationRequest(); configurationRequest.setImageId(request.getImage_id()); configurationRequest.setKeyName("ops"); String configId = genLaunchConfigId(request.getGroup_name()); configurationRequest.setLaunchConfigurationName(configId); configurationRequest.setAssociatePublicIpAddress( request.getAssign_public_ip() != null && request.getAssign_public_ip()); if (request.getSecurity_group() != null) { configurationRequest.setSecurityGroups(Arrays.asList(request.getSecurity_group())); }//from w w w . jav a 2 s . co m configurationRequest.setIamInstanceProfile(request.getIam_role()); configurationRequest.setInstanceType(request.getInstance_type()); InstanceMonitoring monitoring = new InstanceMonitoring(); // DO NOT enable detailed instance monitoring monitoring.setEnabled(false); configurationRequest.setInstanceMonitoring(monitoring); configurationRequest.setUserData(request.getUser_data()); aasClient.createLaunchConfiguration(configurationRequest); return configId; }
From source file:com.pinterest.arcee.autoscaling.AwsAutoScaleGroupManager.java
License:Apache License
@Override public String createLaunchConfig(String groupName, String instanceId, String imageId) throws Exception { if (instanceId == null) { throw new Exception( String.format("Cannot get instance id when creating launch config for %s", groupName)); }/*from w w w . j a v a 2 s . c o m*/ String configId = genLaunchConfigId(groupName); CreateLaunchConfigurationRequest configurationRequest = new CreateLaunchConfigurationRequest(); configurationRequest.setInstanceId(instanceId); configurationRequest.setImageId(imageId); configurationRequest.setLaunchConfigurationName(configId); aasClient.createLaunchConfiguration(configurationRequest); return configId; }
From source file:com.pinterest.arcee.autoscaling.AwsAutoScalingManager.java
License:Apache License
private String createLaunchConfigInternal(String groupName, AwsVmBean request, String bidPrice) throws Exception { String launchConfigId = genLaunchConfigId(groupName); CreateLaunchConfigurationRequest configurationRequest = new CreateLaunchConfigurationRequest(); configurationRequest.setImageId(request.getImage()); configurationRequest.setKeyName(vmKeyName); configurationRequest.setLaunchConfigurationName(launchConfigId); configurationRequest.setAssociatePublicIpAddress(request.getAssignPublicIp()); if (request.getSecurityZone() != null) { configurationRequest.setSecurityGroups(Arrays.asList(request.getSecurityZone())); }//from ww w .j a v a 2s .c om if (bidPrice != null) { configurationRequest.setSpotPrice(bidPrice); } if (request.getRole() == null) { configurationRequest.setIamInstanceProfile(String.format(roleTemplate, ownerId, defaultRole)); } else { configurationRequest.setIamInstanceProfile(String.format(roleTemplate, ownerId, request.getRole())); } configurationRequest.setInstanceType(request.getHostType()); InstanceMonitoring monitoring = new InstanceMonitoring(); // DO NOT enable detailed instance monitoring monitoring.setEnabled(false); configurationRequest.setInstanceMonitoring(monitoring); if (StringUtils.isEmpty(request.getRawUserDataString())) { String userData = transformUserDataConfigToString(groupName, request.getUserDataConfigs()); configurationRequest.setUserData(Base64.encodeBase64String(userData.getBytes())); } else { configurationRequest.setUserData(Base64.encodeBase64String(request.getRawUserDataString().getBytes())); } aasClient.createLaunchConfiguration(configurationRequest); return launchConfigId; }
From source file:com.pinterest.clusterservice.cm.AwsVmManager.java
License:Apache License
private String createLaunchConfig(String clusterName, AwsVmBean awsVmBean) throws Exception { try {//from w ww .j a v a 2 s .c o m CreateLaunchConfigurationRequest configRequest = new CreateLaunchConfigurationRequest(); String launchConfigId = genLaunchConfigId(clusterName); configRequest.setLaunchConfigurationName(launchConfigId); configRequest.setKeyName(AWS_VM_KEYNAME); configRequest.setImageId(awsVmBean.getImage()); configRequest.setInstanceType(awsVmBean.getHostType()); configRequest.setSecurityGroups(Arrays.asList(awsVmBean.getSecurityZone())); configRequest.setAssociatePublicIpAddress(awsVmBean.getAssignPublicIp()); String userData = transformUserDataConfigToString(clusterName, awsVmBean.getUserDataConfigs()); configRequest.setUserData(Base64.encodeBase64String(userData.getBytes())); if (awsVmBean.getRole() == null) { configRequest.setIamInstanceProfile(String.format(AWS_ROLE_TEMPLATE, ownerId, AWS_DEFAULT_ROLE)); } else { configRequest.setIamInstanceProfile(String.format(AWS_ROLE_TEMPLATE, ownerId, awsVmBean.getRole())); } configRequest.setInstanceMonitoring(new InstanceMonitoring().withEnabled(false)); aasClient.createLaunchConfiguration(configRequest); return launchConfigId; } catch (AmazonClientException e) { LOG.error(String.format("Failed to create launch config for %s: %s", clusterName, e.getMessage())); throw new Exception( String.format("Failed to create launch config for %s: %s", clusterName, e.getMessage())); } }
From source file:com.pinterest.clusterservice.cm.AwsVmManager.java
License:Apache License
private String updateLaunchConfig(String clusterName, AwsVmBean oldBean, AwsVmBean newBean) throws Exception { try {//from ww w . j a v a 2 s . co m CreateLaunchConfigurationRequest configRequest = new CreateLaunchConfigurationRequest(); String launchConfigId = genLaunchConfigId(clusterName); configRequest.setLaunchConfigurationName(launchConfigId); configRequest.setKeyName(AWS_VM_KEYNAME); configRequest.setImageId(newBean.getImage() != null ? newBean.getImage() : oldBean.getImage()); configRequest .setInstanceType(newBean.getHostType() != null ? newBean.getHostType() : oldBean.getHostType()); configRequest.setSecurityGroups(Arrays.asList( newBean.getSecurityZone() != null ? newBean.getSecurityZone() : oldBean.getSecurityZone())); configRequest .setAssociatePublicIpAddress(newBean.getAssignPublicIp() != null ? newBean.getAssignPublicIp() : oldBean.getAssignPublicIp()); String userData; if (newBean.getUserDataConfigs() != null) { userData = transformUserDataConfigToString(clusterName, newBean.getUserDataConfigs()); } else { userData = transformUserDataConfigToString(clusterName, oldBean.getUserDataConfigs()); } configRequest.setUserData(Base64.encodeBase64String(userData.getBytes())); if (newBean.getRole() != null) { configRequest.setIamInstanceProfile(String.format(AWS_ROLE_TEMPLATE, ownerId, newBean.getRole())); } else { configRequest.setIamInstanceProfile(String.format(AWS_ROLE_TEMPLATE, ownerId, oldBean.getRole())); } configRequest.setInstanceMonitoring(new InstanceMonitoring().withEnabled(false)); aasClient.createLaunchConfiguration(configRequest); return launchConfigId; } catch (AmazonClientException e) { LOG.error(String.format("Failed to update launch config for %s: %s", clusterName, e.getMessage())); throw new Exception( String.format("Failed to udpate launch config for %s: %s", clusterName, e.getMessage())); } }
From source file:com.zotoh.cloudapi.aws.EC2AutoScale.java
License:Open Source License
@Override public String createLaunchConfiguration(String name, String ami, VirtualMachineProduct type, String... firewalls) throws InternalException, CloudException { tstEStrArg("launch-config-name", name); tstEStrArg("image-id", ami); tstObjArg("product-type", type); tstNEArray("firewalls", firewalls); _svc.getCloud().getAutoScale()//from www . j av a 2s.c o m .createLaunchConfiguration(new CreateLaunchConfigurationRequest().withLaunchConfigurationName(name) .withInstanceType(type.getProductId()).withSecurityGroups(firewalls).withImageId(ami)); return name; }
From source file:de.tuhrig.deployman.launch.Launcher.java
private CreateLaunchConfigurationRequest createLaunchConfigurationRequest(Formation formation) { Machine machine = formation.getMachine(); Scaling scaling = machine.getScaling(); Properties generalProperties = getMetaInformationProperties(formation); CloudInitScript initScript = getParallelCloudInitScript(machine, generalProperties); IamInstanceProfileSpecification profil = this.ec2Client .getIamInstanceProfileSpecification(getUserProperty(REPO_PROFILE)); return new CreateLaunchConfigurationRequest().withLaunchConfigurationName(scaling.getName()) .withInstanceType(machine.getInstanceType()).withImageId(machine.getImageId()) .withUserData(initScript.renderAsBase64()).withSecurityGroups(machine.getSecurityGroup()) .withIamInstanceProfile(profil.getName()) // the name NOT the ARN! .withKeyName(getUserProperty(EC2_INSTANCE_KEY)) .withInstanceMonitoring(new InstanceMonitoring().withEnabled(false)); }
From source file:gobblin.aws.AWSSdkClient.java
License:Apache License
/*** * Create a launch configuration that can be later used to create {@link AmazonAutoScaling} groups * * @param launchConfigName Desired launch config name * @param imageId AMI image id to use/*from ww w .ja v a 2 s .c o m*/ * @param instanceType EC2 instance type to use * @param keyName Key name * @param securityGroups Security groups to apply * @param kernelId Optional kernel id * @param ramdiskId Optional ram disk id * @param blockDeviceMapping Optional EBS device mapping * @param iamInstanceProfile Optional IAM instance profile * @param instanceMonitoring Optional instance monitoring * @param userData User data (eg. shell script to execute at instance boot under this launch config) */ public void createLaunchConfig(String launchConfigName, String imageId, String instanceType, String keyName, String securityGroups, Optional<String> kernelId, Optional<String> ramdiskId, Optional<BlockDeviceMapping> blockDeviceMapping, Optional<String> iamInstanceProfile, Optional<InstanceMonitoring> instanceMonitoring, String userData) { final AmazonAutoScaling autoScaling = getAmazonAutoScalingClient(); CreateLaunchConfigurationRequest createLaunchConfigurationRequest = new CreateLaunchConfigurationRequest() .withLaunchConfigurationName(launchConfigName).withImageId(imageId).withInstanceType(instanceType) .withSecurityGroups(SPLITTER.splitToList(securityGroups)).withKeyName(keyName) .withUserData(userData); if (kernelId.isPresent()) { createLaunchConfigurationRequest = createLaunchConfigurationRequest.withKernelId(kernelId.get()); } if (ramdiskId.isPresent()) { createLaunchConfigurationRequest = createLaunchConfigurationRequest.withRamdiskId(ramdiskId.get()); } if (blockDeviceMapping.isPresent()) { createLaunchConfigurationRequest = createLaunchConfigurationRequest .withBlockDeviceMappings(blockDeviceMapping.get()); } if (iamInstanceProfile.isPresent()) { createLaunchConfigurationRequest = createLaunchConfigurationRequest .withIamInstanceProfile(iamInstanceProfile.get()); } if (instanceMonitoring.isPresent()) { createLaunchConfigurationRequest = createLaunchConfigurationRequest .withInstanceMonitoring(instanceMonitoring.get()); } autoScaling.createLaunchConfiguration(createLaunchConfigurationRequest); LOGGER.info("Created Launch Configuration: " + launchConfigName); }