簡體   English   中英

在使用 RDS 的 AWS (Elastic Beanstalk) 上部署 Spring 引導應用程序 - 應用程序未啟動

[英]Deploy Spring Boot application on AWS (Elastic Beanstalk) that uses RDS - Application does not start

我有一個連接到 MySQL 數據庫的 SpringBoot 應用程序。 這已經安裝在 AWS 上並輸入到 Spring 的屬性文件中。 連接有效,我也可以使用我的工作台連接到它。 但我的問題是該應用程序不在 AWS 上運行。 我將 SERVER_PORT 更改為 5000(也在屬性中)但我無法讓應用程序運行

AWS 日志文件:

在此處輸入圖像描述

在此處輸入圖像描述

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 https://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>2.6.6</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.backend</groupId>
<artifactId>SYFALL</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SYFALL</name>
<description>Demo project for Spring Boot</description>
<properties>
    <java.version>11</java.version>
</properties>
<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
 </build>

</project>

應用程序.properties 文件:

server.port = 5000
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

spring.datasource.url = jdbc:mysql://AWS_DATABASE:3306/syfall
spring.datasource.username = xxx
spring.datasource.password = xxx

## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

該應用程序構建為 JAR 文件。

如評論中所述,我有我的示例 Spring BOOT 應用程序,它使用 MySQL RDS 數據並完美地查詢和顯示數據。

在此處輸入圖像描述

我目前正在部署到 Elastic Beanstalk。 完成后,我將用注釋更新此線程。

更新

我成功地將這個 Spring BOOT 應用程序部署到 Elastic Beanstalk 並使 RDS 連接正常工作。 我使用mvn package 將 Spring BOOT 應用打包成 JAR 然后我將 JAR 部署到 Elastic Beanstalk 上。

在此處輸入圖像描述

筆記:

請務必在 Elastic Beanstalk 環境中正確指定您的環境變量(而不是 Spring 配置文件)——如下所示:

在此處輸入圖像描述

如果您的應用程序使用 AWS 服務客戶端,則需要 AWS Creds。 我在這個應用程序中使用 SES,所以我需要它們

現在這是重要的部分。 您需要設置入站規則,以便可以建立從部署在 EB 上的應用程序到 RDS 的連接。 我只是用它來測試....

在此處輸入圖像描述

為了更進一步,您當然可以在入站規則中使用您的應用程序在 Beanstalk 上的 IP 地址。 為此,請獲取 Elastic Beanstalk 應用程序的 IP。 然后在您的入站規則中使用該 IP。

在此處輸入圖像描述

確保您的 RDS 使用的安全組也是您的 EB 應用程序使用的安全組。 RDS 和 EB 必須在同一區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM