JUINTINATION

AWS 엘라스틱빈스톡 프로젝트 배포 본문

Amazon Web Services

AWS 엘라스틱빈스톡 프로젝트 배포

DEOKJAE KWON 2024. 7. 16. 02:39
반응형

이 글은 지난 AWS 엘라스틱빈스톡 생성하기에서 이어지는 내용이다. 지난 글에서 언급했다시피 과금 이슈가 있어서 미루다가 뭐 얼마나 나오겠어 하는 마인드로 그냥 진행하기로 했다.

 

AWS 엘라스틱빈스톡 생성하기

엘라스틱빈스톡AWS Elastic Beanstalk은 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker를 사용하여 개발된 웹 애플리케이션 및 서비스를 Apache, Nginx, Passenger 및 IIS와 같은 친숙한 서버에서 손쉽게 배포하고

juintination.tistory.com

jar 파일 만들기

AWS 환경이 아닌, 본인의 컴퓨터에서 프로젝트를 다운받아야 한다.

책에서 요구하는 프로젝트는 스프링부트 2.6.6 버전으로 되어 있으며, jdk 11 버전이 필요하다. 하지만 나는 지금 데스크탑으로 하고 있는데 jdk 17 버전이 설치되어 있고, 맥북을 꺼내기 좀 귀찮기도 해서 그냥 aws에 설치하고 jar 파일을 만든 뒤, 예전 글에서 사용했었던 SFTP를 이용하여 옮기려고 했는데..

 

지금 가동중인 인스턴스에는 git도 설치되어 있지 않고, 귀찮기도 해서 그냥 맥북을 꺼내서 진행하기로 했다.

그리고 한 가지 의문인 것은 현재 인스턴스의 java 버전은 17인데.. jar 파일만 있으면 돌아가는 것인가..?

 

 

싶어서 책을 찾아보니 뒤쪽에 위와 같이 설정을 진행하던 페이지와 다르게 플랫폼이 Corretto 11 running on 64bit Amazon Linux 2/3.2.14로 되어있는 것이다.. 아무튼 아래까지 모든 과정을 진행했을 때 문제없이 진행이 되니 일단 넘어가기로 했지만 이해는 잘 안된다.

 

아무튼 일단 위와 같이 프로젝트를 클론한 뒤 gradlew에 실행 권한을 부여한 뒤 빌드한다. 그러면 build/libs 디렉터리에 jar 파일이 하나 생긴다.

 

다시 AWS 홈페이지로 돌아와 엘라스틱빈스톡의 환경 탭으로 들어간 뒤 우측 상단의 업로드 및 배포 버튼을 클릭한다.

 

이후 위와 같이 아까 만든 jar 파일을 업로드하고 배포 버튼을 누른다.

Whitelabel Error Page

jar 파일이 업로드되고 환경 업데이트가 완료된 후 환경으로 이동 탭을 누르면 위와 같이 오류가 발생한다.

그 원인은 프로젝트의 컨트롤러 부분을 보면 알 수 있다.

package site.metacoding.awsv3;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
public class HelloController {

    @GetMapping("/aws/v3")
    public String hello(@RequestParam(defaultValue = "1") Integer number) {
        if (number == 1) { // info 로그
            log.info("/aws/v3 이 호출되었어요. info 로그 #####################################");
        } else if (number == -1) { // error 로그
            log.error("/aws/v3 이 호출되었어요. error 로그 #####################################");
        } else if (number == 0) { // warn 로그
            log.warn("/aws/v3 이 호출되었어요. warn 로그 #####################################");
        }

        return "<h1>aws v3</h1>";
    }
}

이 프로젝트에는 디폴트 주소(/)가 없다. 그래서 페이지를 찾지 못하는 것이고, 도메인 주소에 /aws/v3 를 붙여서 다시 접속하면 위와 같이 정상적으로 aws v3가 출력되는 것을 볼 수 있다.

엘라스틱빈스톡 재배포

aws-v3과 똑같지만 디폴트 주소(/)가 추가된 프로젝트로 재배포하도록 하겠다. 다음은 수정된 프로젝트의 컨트롤러 부분이다.

package site.metacoding.awsv3;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
public class HelloController {

    @GetMapping("/")
    public String home() {   
        return "<h1>home page</h1>";
    }
    
    @GetMapping("/aws/v3")
    public String hello(@RequestParam(defaultValue = "1") Integer number) {
        if (number == 1) { // info 로그
            log.info("/aws/v3 이 호출되었어요. info 로그 #####################################");
        } else if (number == -1) { // error 로그
            log.error("/aws/v3 이 호출되었어요. error 로그 #####################################");
        } else if (number == 0) { // warn 로그
            log.warn("/aws/v3 이 호출되었어요. warn 로그 #####################################");
        }

        return "<h1>aws v3</h1>";
    }
}

디폴트 주소(/)로 이동하면 home page가 출력되게 되어있다.

 

아까와 똑같이 프로젝트를 클론한 뒤 gradlew에 실행 권한을 부여한 뒤 빌드한다.

 

build/libs 디렉터리에 생긴 jar 파일을 다시 배포한다.

 

jar 파일이 업로드되고 환경 업데이트가 완료된 후 환경으로 이동 탭을 누르면 위와 같이 home page가 정상적으로 출력되는 것을 볼 수 있다. 물론 도메인 뒤에 /aws/v3 를 붙여도 정상적으로 aws v3가 출력된다.


결론

며칠 쉬었는데 오늘도 다른 일정 때문에 아무것도 못해서.. 이대로는 안 되겠다는 생각에 일정이 끝나고 러닝도 다녀오고, 상쾌한(?) 마음으로 늦은 시간이지만 글을 작성해 봤다.
지금 하는 프로젝트의 팀 지원비가 빨리 입금이 돼야 부담 없이 공부를 계속할 수 있을 것 같은데.. 과금 이슈는.. 일단 미래의 나에게 미뤄두도록 하고, 일단 내 실력을 키우는 데에 집중하기로 했다. 계속 화이팅 하자.

728x90
Comments