【问题标题】:Deploy new war to AWS Elastic Beanstalk environment through JAVA API通过 JAVA API 将新战争部署到 AWS Elastic Beanstalk 环境
【发布时间】:2017-12-27 01:28:06
【问题描述】:
我通过 AWS Java API 为该应用程序创建了一个 Elastic Beanstalk 应用程序和环境。现在环境正在运行示例应用程序。我只需要通过 Java API 将新的 war 文件部署到环境中。怎么做?
这是我创建环境的代码,
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);
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
aws-sdk
amazon-elb
【解决方案1】:
首先您将战争文件上传到 S3 存储桶,然后通过引用具有新战争文件的 S3 存储桶位置来创建新的 Beanstalk 应用程序版本。之后上传新的应用程序版本并将其部署到实例。您可以使用 Java SDK 执行此操作,如下所示,
// 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);