如何使用 AWS CLI 2 将更新后的 JAR 上传到现有的 Java Elastic Beanstalk 实例?

How do I upload an updated JAR to an existing Java Elastic Beanstalk instance using the AWS CLI 2?

我有一个 Java 通过网络手动设置的 Elastic Beanstalk 实例 UI。

我可以随时通过 UI 手动上传更新的 JAR。

如何通过 AWS CLI 2 完成相同的操作?

你做两组:

  1. 使用 create-application-version 使用新程序创建新的应用程序版本。请注意您要使用的版本的 --version-label
  2. 更新您的 EB 环境以使用 update-environment 的新应用程序版本。您必须提供第 1 步中的 --version-label

或者,您可以使用 AWS EB CLI AWS 专门为 EB 开发的 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。您部署一个版本。 Version 指向 JAR。这与您通过 UI 所做的(您所看到的)不同,您只需上传 JAR 即可部署。

b) Version的source-bundle指向JAR。是的,虽然在 Java 世界中,'source' 这个词有某种含义,而 JAR 不是源代码,但在 Elastic Beanstalk 世界中,'source' 是您的可执行代码

c) Version 指向的 JAR 必须在 S3 中。 是您上传 JAR 的地方。