Example usage for com.amazonaws.services.autoscaling.model CreateLaunchConfigurationRequest CreateLaunchConfigurationRequest

List of usage examples for com.amazonaws.services.autoscaling.model CreateLaunchConfigurationRequest CreateLaunchConfigurationRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.autoscaling.model CreateLaunchConfigurationRequest CreateLaunchConfigurationRequest.

Prototype

CreateLaunchConfigurationRequest

Source Link

Usage

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);
}