Nithyananth
Nithyananth

Reputation: 347

Deploy new war to AWS Elastic Beanstalk environment through JAVA API

I created an Elastic Beanstalk Application and Environment for that application through AWS Java API. Now the environment is running with sample application. I just need to deploy new war file to the environment through Java API. How to do it?

Here is my code for creating Environment,

CreateEnvironmentRequest createEnvironmentRequest = new CreateEnvironmentRequest()
                .withApplicationName("MySampleApplicationThree").withEnvironmentName("MySampleApplicationThree-env")
                .withCNAMEPrefix("MySampleApplicationThree")
                .withSolutionStackName("64bit Amazon Linux 2017.03 v2.6.1 running Tomcat 8 Java 8")
                .withVersionLabel("Sample Application")
                ;
        CreateEnvironmentResult envresult = service.beansTalk().createEnvironment(createEnvironmentRequest);

Upvotes: 1

Views: 334

Answers (1)

user5063991
user5063991

Reputation:

First you upload the war file to S3 bucket and then create new Beanstalk Application version by referring the S3 bucket location having new war file. After that upload and deploy the new application version to the instance. You can do this using Java SDK as below,

      // Create Environment
           CreateEnvironmentRequest envRequest = new CreateEnvironmentRequest("SampleApplication", "SampleApplication-env2");
            envRequest.setSolutionStackName("64bit Amazon Linux 2017.03 v2.6.1 running Tomcat 8 Java 8");
            envRequest.setVersionLabel("SampleApplication");
            service.beansTalk().createEnvironment(envRequest);

            // Deploy code
            //Create S3 storage location and upload new file into it            
            CreateStorageLocationResult location = service.beansTalk().createStorageLocation();
            String bucket = location.getS3Bucket();
            File file = new File("FirstServlet.war");
            PutObjectRequest object = new PutObjectRequest(bucket, "FirstServlet.war", file);
            PutObjectResult res = service.s3().putObject(object);


            CreateApplicationVersionRequest versionRequest = new CreateApplicationVersionRequest();
            versionRequest.setVersionLabel("First Servlet");
            versionRequest.setApplicationName("SampleApplication");
            S3Location s3 = new S3Location(bucket, "FirstServlet.war");
            versionRequest.setSourceBundle(s3);
            CreateApplicationVersionResult resu = service.beansTalk().createApplicationVersion(versionRequest);


            UpdateEnvironmentRequest updateRequest = new UpdateEnvironmentRequest();
            updateRequest.setEnvironmentId("xxx");
            updateRequest.setVersionLabel("First Servlet");
            UpdateEnvironmentResult result = service.beansTalk().updateEnvironment(updateRequest);

Upvotes: 1

Related Questions