AWS Elastic Beanstalk部署极简Spring工程(EB CLI失败版)
弃用
这里我没有走通EB CLI方式部署。
问题
最近又加入了AWS项目组,又要再次在AWS云上面部署Spring服务,我这里使用的使用AWS中国云。需要使用AWS Elastic Beanstalk部署一个极简Spring工程。
EB CLI安装
安装EB CLI之前需要先在本地安装好Git,Python,virtualenv三个软件。安装好上面三个软件后,才能开始EB CLI的安装。
# 拉代码
git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git
# 脚本安装
python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py
# 配置zsh
echo 'export PATH="/Users/zhangyalin/.ebcli-virtual-env/executables:$PATH"' >> ~/.zshenv && source ~/.zshenv
验证安装工具软件版本
# 查看eb版本
eb --version
# 查看java版本
java -version
# 查看maven版本
mvn -v
创建一个极简Spring工程
mkdir eb-java
cd eb-java
Application.java
./eb-java/src/main/java/com/example/Application.java
内容如下:
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
Controller.java
./eb-java/src/main/java/com/example/Controller.java
内容如下:
package com.example;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Controller {@GetMapping("/")public String index() {return "Hello Elastic Beanstalk!";}
}
pom.xml
./eb-java/pom.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.3</version></parent><groupId>com.example</groupId><artifactId>BeanstalkJavaExample</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>21</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-rest</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
application.properties
./eb-java/src/main/resources/application.yml
内容如下:
server:port: 5000
Elastic Beanstalk默认找spring5000端口。
构建spring工程
mvn clean && mvn package -Dmaven.test.skip=true
运行Spring工程
java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
使用EB CLI部署spring工程
配置Spring工程
Buildfile
创建eb构建应用程序配置文件:./eb-java/Buildfile
。内容如下:
build: mvn clean && mvn package -Dmaven.test.skip=true
Procfile
创建eb运行应用程序配置文件:./eb-java/Procfile
。内容如下:
web: java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
创建eb环境并部署
# 切换本地aws环境
export AWS_PROFILE=xxx
export AWS_EB_PROFILE=xxx
# 初始化eb工程
eb init -p corretto-17 java-tutorial --region cn-north-1
eb init
eb create java-env --region cn-north-1
# 我到这一步的时候 EB CLI走不下去了,出现了如下问题,可能是我下载的cli工具是国际云的。
Invalid ARN partition
初始化过程如下图:
总结
2025年5月份 EB CLI对于中国云区,支持不太友好,劝退了,我还是回去使用web图形界面吧。
参考
- ebcli开源项目主页
- 安装 Elastic Beanstalk 命令行界面
- spring在线创建demo工程页面