【发布时间】:2021-01-02 16:37:29
【问题描述】:
我有一个通过 Web UI 手动设置的 Java Elastic Beanstalk 实例。
我可以随时通过 UI 手动上传更新的 JAR。
如何通过 AWS CLI 2 完成相同的任务?
【问题讨论】:
标签: java amazon-web-services amazon-elastic-beanstalk aws-cli
我有一个通过 Web UI 手动设置的 Java Elastic Beanstalk 实例。
我可以随时通过 UI 手动上传更新的 JAR。
如何通过 AWS CLI 2 完成相同的任务?
【问题讨论】:
标签: java amazon-web-services amazon-elastic-beanstalk aws-cli
我使用 maven 构建我的 JAR。
mvn clean install
这会在 ./target 目录中生成 JAR my-app.jar。
然后我执行以下操作
export version=1.0-`date +"%Y%m%d-%H%M%S"`
这是我将在整个过程中使用的环境变量。
步骤 1. 将 JAR 上传到 S3 存储桶
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。您部署一个版本。版本指向 JAR。这与(您所看到的)您通过 UI 执行的操作不同,您只需上传 JAR 并进行部署。
b) 版本的source-bundle 指向 JAR。是的,虽然在 Java 世界中,“源”这个词意味着某些东西,而 JAR 不是源,但在 Elastic Beanstalk 世界中,“源”是您的可执行代码
c) Version 指向的 JAR 必须在 S3 中。 那是你上传 JAR 的地方。
【讨论】:
您分两组:
--version-label。--version-label。或者,您可以使用AWS EB CLI,这是 AWS 专门为 EB 开发的 CLI 工具。
【讨论】:
--version-label 指定要使用的应用程序版本标签。
--source-bundle 指向 JAR。但它必须在 S3 存储桶中