AWS 배포

뚜우웅이·2025년 2월 9일

AWS에 배포

AWS를 이용하게 되면 로컬에서 직접 실행하는 것이 아니라 클라우딩 컴퓨팅 서비스를 이용하여 배포할 수 있게 된다.

AWS 계정 생성

AWS는 계정 생성 후 1년 동안 프리티어 자격을 준다. 이것을 이용하여 지정된 한도 내에서 무료로 AWS 서비스를 이용할 수 있다.

AWS에 접속하여 회원가입을 해준다.

일래스틱 빈스토크로 서버 구축

ec2의 사용이 불편하다는 점을 보완한 Elastic Baenstalk를 이용하는 것이다.


지역을 서울로 변경해준다.

역할 생성

검색창에 IAM을 검색한 뒤 역할 -> 역할 생성을 클릭한다.

권한 추가에는 아래 항목을 체크해준다.

  • AWSElasticBeanstalkMulticontainerDocker
  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier

ec2 키페어

ec2를 검색 후 키페어를 눌러 생성을 해준다.

Elastic Beanstalk

검색 창에 Elastic Beanstalk을 검색한 뒤 애플리케이션을 눌러준다.



사용자 이름과 암호는 작성 후 다른 곳에 적어둔다.

생성이 다 끝나고 도메인에 있는 url을 클릭 시 아래와 같은 화면이 나오게 된다.

RDS

Elastic Beanstalk -> 구성 -> 네트워킹 및 데이터베이스 구성으로 들어가서 엔드포인트를 복사해준다.

모니터링에 들어가서 아래와 같이 추가 해준다.

Elastic Beanstalk는 기본적으로 포트 5000에서 애플리케이션을 실행하기 때문에 port를 바꿔준다.

이렇게 설정한 환경 속성 값은 애플리케이션 실행 시 스프링 부트의 환경 변수 즉 application.yml 역할을 한다.

server:
  port: 5000

프로젝트 파일도 위와 같이 수정해준다.

로컬에서 RDS 사용

AWS 검색 창에서 RDS를 검색해준다.
왼쪽 메뉴바에서 데이터베이스 클릭 -> DB 식별자 클릭 -> VPC 보안 그룹 클릭
-> 보안 그룹 ID 클릭 -> 인바운드 규칙 편집

내 IP를 추가해준다.

다른 곳에서도 사용할 경우 아래와 같이 설정해준다. 하지만 보안 위험이 있다.

이제 MySQL 설정을 추가해준다.

Intellij에서 DB 연결을 추가하면 쿼리 자동완성 기능을 사용할 수 있다.

HOSTRDS에 구성에 있는 엔드포인트를 입력해주면 된다.
그 후 전에 작성했던 UserPassword를 작성해준다.

이제 application.yml 에서 srping 항목의 datasource 항목들을 변경해준다.

spring:
  datasource:
    url:  jdbc:mysql://RDS 엔드포인트:3306/DB이름
    username: taeheon
    password: rlaxogjs5656

엔드포인트은 RDS 연결 및 보안에서 확인 가능하고
DB 이름은 구성에서 확인 가능하다.

Security config

이제 h2를 사용하지 않으니 NoSuchBeanDefinitionException (H2ConsoleProperties) 에러가 발생하지 않게 수정해준다.

//    @Bean
//    public WebSecurityCustomizer configure() {
//        return (web) -> web.ignoring()
//                .requestMatchers(PathRequest.toH2Console())
//                .requestMatchers(new AntPathRequestMatcher("/static/**"));
//    }

위 코드를 제거하거나 주석처리 해준다.

MySQL 의존성 추가

    // MySQL
    implementation 'mysql:mysql-connector-java:8.0.33'

서비스 배포하기

인텔리제이를 실행해서 Gradle -> Tasks -> build -> build를 눌러 빌드를 진행한다.


빌드가 끝나게 되면 Build -> libs에 빌드 파일이 생성 된다.

jar 파일은 -<버전>으로 끝나는 것과 -<버전>-plain으로 끝나는 것 두 가지가 있는데 이중에 -<버전>을 기억하기 쉬운 위치에 저장해둔다.

버전 정보는 build.gradleversion = '0.0.1-SNAPSHOT'으로 변경 가능하다.

이제 Elastic Beanstalk로 가서 환경 이름을 클릭하고 업로드 및 배포를 클릭해준다.

자바 버전 변경

현재 배포시 자바 버전이 맞지 않아 문제가 생겨 프로젝트의 자바 버전을 21 버전으로 낮춰준다.

gradle에서도 자바 버전을 변경해준다.

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

OAuth2 승인된 URI 추가

도메인을 누르면 페이지가 정상적으로 작동하는 것을 볼 수 있다.
하지만 OAuth2로 로그인을 하게 되면 오류가 발생한다.
이 오류를 해결하기 위해 승인된 URI를 추가해준다.

google

구글 클라이언트 콘솔에 접속하여 Elastic Beanstalk에서 띄워준 서버의 URI를 추가해준다.
API 및 서비스 -> 사용자 인증 정보 -> OAuth2 클라이언트 ID -> 승인된 리디렉션 URI 추가

http://[ElasticBeanstalk 도메인 주소]/login/oauth2/code/google

Naver Developers에 접속하여 내 어플리케이션 -> API 설정에서 추가해준다.
http://[ElasticBeanstalk 도메인 주소]/login/oauth2/code/naver

profile
공부하는 초보 개발자

0개의 댓글