棄用
這里我沒有走通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工程頁面