実現したいこと
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
回答1件
あなたの回答
tips
プレビュー