繁体   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