Nandu
Nandu

Reputation: 231

How to create AWS Elastic Beanstalk environment using java sdk?

Can anyone help me with or provide any sources for creating the Aws Elastic beanstalk Environment using java program and depoly our application in it?

Thank you in advance.

Upvotes: 2

Views: 1446

Answers (4)

smac2020
smac2020

Reputation: 10734

Here is the updated AWS SDK for Java V2 to create an Environment for Elastic Beanstalk

Region region = Region.US_WEST_2;
  ElasticBeanstalkClient beanstalkClient = ElasticBeanstalkClient.builder()
            .region(region)
            .build();    

  ConfigurationOptionSetting setting1 = ConfigurationOptionSetting.builder()
        .namespace("aws:autoscaling:launchconfiguration")
        .optionName("IamInstanceProfile")
        .resourceName("aws-elasticbeanstalk-ec2-role")
        .build();


  CreateEnvironmentRequest applicationRequest = CreateEnvironmentRequest.builder()
        .description("An AWS Elastic Beanstalk environment created using the AWS Java API")
        .environmentName("MyEnviron8")
        .solutionStackName("64bit Amazon Linux 2 v3.2.12 running Corretto 11")
        .applicationName("TestApp")
        .cnamePrefix("CNAMEPrefix")
        .optionSettings(setting1)
        .build();

CreateEnvironmentResponse response = beanstalkClient.createEnvironment(applicationRequest);

To learn how to get up and running with the AWS SDK for Java V2, see https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html.

Upvotes: 0

Nithyananth
Nithyananth

Reputation: 347

There is a small piece of code missing in the above given code under this section,

CreateApplicationVersionRequest versionRequest = new CreateApplicationVersionRequest();
        versionRequest.setVersionLabel("myversion");
        versionRequest.setApplicationName("myAppName");
        S3Location s3 = new S3Location(bucket, "myapp.zip");
        versionRequest.setSourceBundle(s3);

You need to add eb.createApplicationVersion(versionRequest); in order to create new version with your own source files. Only then you can deploy the new version to the running instance of the environment.

Upvotes: 1

Nick Humrich
Nick Humrich

Reputation: 15785

You can download the AWS Java SDK here. It is also in the maven repository:

Maven:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.9.7</version>
</dependency>

Gradle:

'com.amazonaws:aws-java-sdk:1.9.7'

Now, onto using the sdk. You might want to read up on getting started with the aws sdk.

Here is some very watered down code to get you started:

import com.amazonaws.services.elasticbeanstalk.AWSElasticBeanstalkClient;
import com.amazonaws.services.elasticbeanstalk.model.*;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.PutObjectRequest;

import java.io.File;

public class AwsTest {

    public static void main(String[] args) {

        AWSElasticBeanstalkClient eb = new AWSElasticBeanstalkClient();

        // Create Application
        CreateApplicationRequest request = new CreateApplicationRequest("myAppName");
        eb.createApplication(request);

        // Create Environment
        CreateEnvironmentRequest envRequest = new CreateEnvironmentRequest("myAppName", "env-name");
        envRequest.setSolutionStackName("64bit Amazon Linux 2014.09 v1.0.9 running Tomcat 7 Java 7");
        envRequest.setVersionLabel("application Version");
        eb.createEnvironment(envRequest);

        // Deploy code
        CreateStorageLocationResult location = eb.createStorageLocation();
        String bucket = location.getS3Bucket();
        File file = new File("myapp.zip");
        PutObjectRequest object = new PutObjectRequest(bucket, "myapp.zip", file);
        new AmazonS3Client().putObject(object);

        CreateApplicationVersionRequest versionRequest = new CreateApplicationVersionRequest();
        versionRequest.setVersionLabel("myversion");
        versionRequest.setApplicationName("myAppName");
        S3Location s3 = new S3Location(bucket, "myapp.zip");
        versionRequest.setSourceBundle(s3);

        UpdateEnvironmentRequest updateRequest = new UpdateEnvironmentRequest();
        updateRequest.setVersionLabel("myversion");
        eb.updateEnvironment(updateRequest);

    }
}

Upvotes: 3

John Rotenstein
John Rotenstein

Reputation: 270154

A convenient method for deploying an AWS Elastic Beanstalk environment is to use the AWS Toolkit for Eclipse.

It allows you to write and test your code locally, then create an Elastic Beanstalk environment and deploy your code to the environment.

The Elastic Beanstalk management console can also be used to deploy a Java environment with a Sample Application, which you can then override with your own code.

See also:

Upvotes: 0

Related Questions