일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 제이쉘
- github
- 컴퓨터과학개론
- 알고리즘
- 프로그래밍기초
- 프로그래밍
- 배열
- JShell
- spring
- 초보코딩
- 스프링
- 메소드
- 스프링 기초
- JAVA기초
- 자바 스프링
- 이클립스
- Java
- 자바
- 클래스
- 리눅스
- 초보코딩탈출
- 기초코딩
- 프로그래밍언어
- Elk
- 자바프로그래밍
- 데이터베이스
- Git
- 코딩초보
- eclips
- 자바기초
- Today
- Total
키보드워리어
[AWS] elastic beanstalk을 이용하여 웹서비스 배포 본문
안녕하세요! 오늘 저는 AWS Elastic Beanstalk를 사용하여 웹 애플리케이션을 배포해보려고 합니다.
시작부터 난관 - 502 Bad Gateway
REST API를 디자인한 todolist를 배포하려고
todolist를 REST API를 만들었습니다.
그리고 maven run as를 활용해서
clean install로 jar파일을 만들었는데요!
문제는 사이트에 계속해서 502 bad gate way가 뜨더라고요 ㅠ,ㅠ
그래서 저는 Maven run을 통해 clean install도 해보고 package로도 해보고
jar로도 만들어보고 war파일로도 만들어보고 정말 여러 가지 방법을 시도해 봤습니다.
하지만 502는 사라지지 않더라고요 ㅜㅜ. 구성포트를 잘못했는지,
아니면 링크를 잘못 타고 들어간 건지 갈피를 못 잡고 있었어요. (장장 2일 동안)
아니 왜 localhost8080에서는 잘 돌아가는데 aws에는 안 되는 거지?
여러 유튜브 자료들을 참고하여 실수한 건 없는지 차근차근 돌아봤어요.
그랬더니 왜 그런지 힌트를 조금 찾을 수 있겠더라고요..!
https://www.youtube.com/watch?v=qUHf_a2DRio
힌트는 위 유튜브 영상에서 찾아볼 수 있었어요.
위 영상을 강의해 주시는 유튜버분께서는 웹서버를 배포할 때 localhost:8080을 안 쓰시더라고요!
아~ 이게 엔드포인트랑 관련이 있나??
생각이 들었던 저는 제가 만들었던 jar파일을 삭제하고
다시 application.properties 파일을 들여다보게 되었습니다.
#spring.jpa.hibernate.ddl-auto=update
#spring.datasource.url=jdbc:mysql://localhost:3306/test
#spring.datasource.username=root
#spring.datasource.password=****
#spring.jpa.show-sql=true
#spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
여기서 저 localhost:3306 녀석 좀 쎄하게 느껴지더라고요. 저곳은 엔드포인트가 있는 곳!
하지만 aws에서 들어갈 수 없어!
다음은 chatGPT에서 얻은 답변입니다.
AWS Elastic Beanstalk에 애플리케이션을 배포할 때 올바른 데이터베이스 구성을 사용하고 있는지 확인해야 합니다.
제공한 구성에서 로컬 MySQL 데이터베이스(localhost:3306)에 연결하는 것으로 나타납니다.
이 구성은 로컬 시스템에서 작동하지만 Elastic Beanstalk에 배포할 때는 작동하지 않습니다.
"localhost"는 실제 데이터베이스 서버가 아니라 Elastic Beanstalk 인스턴스 자체를 참조하기 때문입니다.
그렇군요!
해답을 얻은 저는 데이터베이스를 삭제하고 jar파일로 구성 후에 elastic beanstalk로 배포를 해보니,, 드디어 되더라고요 ㅜㅜ..
그리고도 안 되는 분은 elastic beanstalk의 환경속성에 server_port를 5000으로 추가해 주시기 바랍니다.
왜냐면 아마존의 포트가 5000이거등요..
그러면 데이터베이스는 언제 연결해야 하는 건가요?
데이터베이스 또는 다른 관리형 데이터베이스 서비스에 Amazon RDS 인스턴스를 사용하고 올바른 연결 세부 정보로 application.properties 파일을 업데이트해야 합니다.
RDS 인스턴스 환경을 조금 바꿔주세요.
데이터 베이스 VPC 보안 클릭! -> 인바운드 규칙 위와 같이 바꿔주기
다음은 Amazon RDS MySQL 인스턴스를 사용하도록 애플리케이션을 구성하는 방법의 예입니다.
spring.datasource.url=jdbc:mysql://나의 엔드포인트 지점:3306/test
엔드포인트 지정!
엔드포인트는 네트워크 또는 인터넷에서 특정 서비스, 리소스 또는 서버의 위치를 나타내는 URL 또는 주소입니다.
웹 서비스, API 및 클라우드 컴퓨팅의 맥락에서 엔드포인트는 종종 클라이언트 애플리케이션이 특정 서비스 또는 리소스에 액세스 하고 상호 작용하는 데 사용하는 URL을 나타냅니다.
Amazon RDS의 경우 엔드포인트는 애플리케이션이 데이터베이스에 연결할 수 있도록 하는 RDS 인스턴스의 고유한 URL이 있습니다.
웹 서비스를 RDS 인스턴스에 연결하려면 올바른 RDS 엔드포인트를 가리키도록 application.properties 파일을 업데이트해야 합니다.
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://test.cluor7izmj6k.ap-southeast-2.rds.amazonaws.com:3306/test
spring.datasource.username=root
spring.datasource.password=****
spring.jpa.show-sql=true
server.port=5000
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
저는 이렇게 해서 서버 배포를 할 수 있었습니다!
참고하시면 좋은 글
2022.08.11 - [개발 관련/AWS 정리] - 【AWS】S3의 기능을 활용해보자!
2022.08.10 - [개발 관련/AWS 정리] - 【AWS】클라우드 서비스 aws에 대한 포스팅
'개발 관련 > AWS 정리' 카테고리의 다른 글
【AWS】S3의 기능을 활용해보자! (0) | 2022.08.11 |
---|---|
【AWS】클라우드 서비스 aws에 대한 포스팅 (0) | 2022.08.10 |