知識庫 / Spring / Spring Boot RSS 訂閱

將 Spring Boot 應用程序部署到 AWS Beanstalk

DevOps,Spring Boot
HongKong
4
01:35 PM · Dec 06 ,2025

1. 概述

在本教程中,我們將演示如何將應用程序從我們的 使用 Spring Boot 啓動簡單應用程序 教程部署到 AWS Elastic Beanstalk

在此過程中,我們將:

  • 安裝和配置 AWS CLI 工具
  • 創建 Beanstalk 項目和 MySQL 部署
  • 配置應用程序以供在 AWS RDS 中使用 MySQL
  • 部署、測試和擴展應用程序

2. AWS Elastic Beanstalk 配置

作為前提,我們應該在 AWS 上註冊,並創建 Elastic Beanstalk 上一個 Java 8 環境。 此外,我們還需要安裝 AWS CLI,這將允許我們連接到我們的環境。

因此,鑑於以上情況,我們需要登錄並初始化我們的應用程序:

cd .../spring-boot-bootstrap
eb init
>
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
(default is 3):

如上所示,我們會被提示選擇一個區域。

最後,我們可以選擇應用程序:

>
Select an application to use
1) baeldung-demo
2) [ Create new Application ]
(default is 2): 

此時,CLI 將創建一個名為.elasticbeanstalk/config.yml的文件。該文件將保留項目的默認設置。

3. 數據庫

現在,我們可以使用 AWS Web 儀表板或通過 CLI 創建數據庫,使用以下命令:

eb create --single --database

我們需要遵循指示,提供用户名和密碼。

有了我們的數據庫創建完成,現在讓我們為我們的應用程序配置 RDS 憑據。我們將通過在名為 beanstalk 的 Spring 配置文件中實現,在我們的應用程序中創建 src/main/resources/application-beanstalk.properties

spring.datasource.url=jdbc:mysql://${rds.hostname}:${rds.port}/${rds.db.name}
spring.datasource.username=${rds.username}
spring.datasource.password=${rds.password}

Spring 將搜索名為 rds.hostname的屬性,作為名為 RDS_HOSTNAME的環境變量。相同的邏輯也將應用於其他相關配置。

4. 應用

現在,我們將為 Beanstalk 添加一個特定 Maven 配置文件到 <pom.xml> 中:

<profile>
    <id>beanstalk</id>
    <build>
        <finalName>${project.name}-eb</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/cloud/config/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

接下來,我們將指定工件到 Elastic Beanstalk 配置文件的 .elasticbeanstalk/config.yml:

deploy:
  artifact: target/spring-boot-bootstrap-eb.jar

最後,我們將包含兩個環境變量到 Elastic Beanstalk。第一個將指定活動的 Spring 配置文件,第二個將確保使用 Beanstalk 期望的默認端口 5000:

eb setenv SPRING_PROFILES_ACTIVE=beanstalk,mysql
eb setenv SERVER_PORT=5000

5. 部署與測試

現在,我們準備好構建和部署:

mvn clean package spring-boot:repackage
eb deploy

接下來,我們將檢查部署應用程序的狀態並確定其 DNS 名稱:

eb status

我們的輸出應該類似於:

Environment details for: BaeldungDemo-env
  Application name: baeldung-demo
  Region: us-east-2
  Deployed Version: app-181216_154233
  Environment ID: e-42mypzuc2x
  Platform: arn:aws:elasticbeanstalk:us-east-2::platform/Java 8 running on 64bit Amazon Linux/2.7.7
  Tier: WebServer-Standard-1.0
  CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com
  Updated: 2018-12-16 13:43:22.294000+00:00
  Status: Ready
  Health: Green

我們現在可以測試該應用程序——請注意 CNAME 字段的使用作為 DNS 來完成 URL。

現在讓我們為我們的圖書館添加一本書:

http POST http://baeldungdemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com/api/books title="The Player of Games" author="Iain M. Banks"

如果一切順利,我們應該得到類似以下內容:

HTTP/1.1 201 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Connection: keep-alive
Content-Type: application/json;charset=UTF-8
Date: Wed, 19 Dec 2018 15:36:31 GMT
Expires: 0
Pragma: no-cache
Server: nginx/1.12.1
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

{
    "author": "Iain M. Banks",
    "id": 5,
    "title": "The Player of Games"
}

6. 擴展應用程序

最後,我們擴展部署以運行兩個實例:

eb scale 2

Beanstalk 現在將運行應用程序的 2 個實例,並均衡負載到這兩個實例之間。

生產環境的自動擴展比較複雜,因此我們稍後再處理。

7. 結論

在本教程中,我們:

  • 安裝並配置了 AWS Beanstalk CLI,並配置了在線環境
  • 部署了 MySQL 服務,並配置了數據庫連接屬性
  • 構建並部署了我們的配置好的 Spring Boot 應用程序,以及
  • 測試和擴展了該應用程序

欲瞭解更多詳細信息,請參閲 AWS Beanstalk Java 文檔

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.