質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

157閲覧

EC2上にデプロイしたアプリケーションがRDSに作成したDBに接続できずエラーとなる

naoto2013487

総合スコア2

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2024/04/13 14:28

編集2024/04/13 14:48

実現したいこと

AWSのEC2上にデプロイしたアプリケーションが、DB接続先としてRDSを見に行くようにしたいです。
EC2:Amazon Linux
アプリケーション:SpringBoot / MyBatis ※Gradleを利用
RDS:Aurora PostgreSQL

■背景
AWS・Springの学習のために、簡単な課題管理アプリケーションを作成しています。
ローカル環境ではH2データベースを用いて開発を行っており問題なく利用できていました。
このソースをAWSにデプロイし、DBとして構築したRDSを見に行くようにしたいと思っています。

発生している問題・分からないこと

Intellijにてjarファイルを作成し、EC2上にデプロイし下記コマンドで実行しました。
java -jar xxxxx.jar(ファイル名はサンプルです)
DBを参照する画面に入ったところでエラーとなります。

ログメッセージより、localhost:5432を見に行ってしまっていることでエラーとなっているようなのですが、なぜlocalhostを見てしまっているのか原因がわからずにいます。
application_propertiesファイルに、RDSの情報を記載しRDSを参照するよう指定しているのですが…。

org.postgresql.util.PSQLException: Connection to localhost:5432 refused.

エラーメッセージ

■画面上

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Apr 13 14:12:04 UTC 2024 There was an unexpected error (type=Internal Server Error, status=500).

■コマンドライン

org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:342) ~[postgresql-42.6.0.jar!/:42.6.0] at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54) ~[postgresql-42.6.0.jar!/:42.6.0] at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:263) ~[postgresql-42.6.0.jar!/:42.6.0] at org.postgresql.Driver.makeConnection(Driver.java:443) ~[postgresql-42.6.0.jar!/:42.6.0] at org.postgresql.Driver.connect(Driver.java:297) ~[postgresql-42.6.0.jar!/:42.6.0] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar!/:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar!/:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) ~[spring-jdbc-6.1.3.jar!/:6.1.3] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) ~[spring-jdbc-6.1.3.jar!/:6.1.3] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.1.3.jar!/:6.1.3] at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) ~[mybatis-spring-3.0.3.jar!/:3.0.3] at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) ~[mybatis-spring-3.0.3.jar!/:3.0.3] at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:348) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.14.jar!/:3.5.14] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.14.jar!/:3.5.14] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at ※以下略

該当のソースコード

■application.properties(プロジェクト内複数個所にこのファイルがあり、すべて修正しています)

spring.thymeleaf.prefix=classpath:/templates/ spring.datasource.url=jdbc:postgresql:XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com:5432/postgres spring.datasource.username=XXXXXXXX spring.datasource.password=XXXXXXXX spring.datasource.driver-class-name=org.postgresql.Driver logging.level.org.springframework.web=debug logging.level.org.hibernate=error logging.file.name=hackathon-example.log

■build.gradle
dependencies に下記を記載しています。(一部抜粋)

implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3' implementation 'org.springframework.boot:spring-boot-starter' runtimeOnly 'org.postgresql:postgresql'

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

■RDSへの接続確認について
EC2のセッションマネージャーを利用して、下記の通りRDSへの接続確認を行っています。

psql --host=DBエンドポイント --port=5432 --dbname=DB名 --username=ユーザ名 password for user postgres: psql (15.5, server 15.4) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. postgres=>

■EC2の環境変数について
EC2の環境変数についても確認しています。
参考にしたサイト

補足

Java:17
Spring:3.2.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2024/04/13 15:40

どのようにデプロイしましたか? また、ソース全体をlocalhostで検索して引っかかるところはないですか?
naoto2013487

2024/04/14 05:18 編集

コメントありがとうございます。 デプロイ方法は下記の流れです。 ・ローカル環境にてIntelliJを用いてbootJarを実行しjarファイルを作成 ・(ネットワークの関係で)AWSのS3経由でEC2にjarファイルをPUT ・java -jar xxxxx.jarの実行 また、ソース全体でlocalhostを検索して引っかかるところはありませんでした。
guest

回答1

0

自己解決

有識者に確認し、原因が判明しました。
SpringのJDBCのStarterパッケージを利用していたのですが、これを利用すると、DatabaseのAutoconfig機能が働くようです。これによってlocalhostを見てしまうようになっていたとのこと。
これをオフにすると、利用しているMyBatisのStarter機能もオフになってしまうとのことで、単純には解決しませんでした。

結局、hostsファイルを修正し、localhostの名前で解決されるIPアドレスをRDSのアドレスに変更することで無理やりRDSを参照するように修正することができました。

投稿2024/04/17 13:19

naoto2013487

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問