我有一个通过web UI手动设置的Java Elastic Beanstalk实例。
我可以随时通过UI手动上传更新后的JAR。
如何通过AWS CLI 2实现同样的功能?
我使用maven来构建我的JAR。
mvn clean install
这将在./target
目录中生成JARmy-app.jar
。
然后我做以下
export version=1.0-`date +"%Y%m%d-%H%M%S"`
这是一个我将在整个过程中使用的环境变量。
步骤1。将JAR上传到S3 bucket
aws s3 cp ./target/my-app.jar s3://my-app.foo.bar/my-app-${version}.jar
步骤2。在Elastic Beanstalk中创建应用程序的版本。
这引用了在步骤1中上传到S3的JAR。
aws elasticbeanstalk create-application-version
--application-name my-app
--version-label ${version}
--source-bundle S3Bucket="my-app.foo.bar",S3Key="my-app-${version}.jar"
步骤3。在Elastic Beanstalk 中部署版本
aws elasticbeanstalk update-environment
--application-name my-app
--environment-name MyApp-env
--version-label ${version}
这里需要注意的要点是:;
a( 您不部署JAR。您部署了一个版本。Version指向JAR。这与您通过UI所做的(您所看到的(不同,在UI中,您只需上传JAR并部署它。
b( Version的source-bundle
指向JAR。是的,尽管在Java世界中,单词"source"的意思是什么,JAR不是源,但在Elastic Beanstalk世界中,"source"是您的可执行代码
c( Version指向的JAR必须在S3中那是上传JAR的地方。
您可以在两个集合中完成:
- 使用创建应用程序版本使用新程序创建新的应用程序版本。请注意要使用的版本的
--version-label
- 更新您的EB环境以使用带有更新环境的新应用程序版本。您必须从步骤1开始提供
--version-label
或者,您可以使用AWS EB CLI,这是AWS专门为EB开发的CLI工具。