AWS Elastic Beanstalk
초기 프로젝트: embedded-server 또는 engine-main
최종 프로젝트: aws-elastic-beanstalk
이 튜토리얼에서는 Ktor 애플리케이션을 AWS Elastic Beanstalk에 준비하고 배포하는 방법을 보여드립니다. Ktor 서버 생성 방식에 따라 다음 초기 프로젝트 중 하나를 사용할 수 있습니다.
Java 애플리케이션 배포에 대한 자세한 내용은 Elastic Beanstalk 문서에서 확인하세요.
전제 조건
이 튜토리얼을 시작하기 전에 AWS 계정을 생성해야 합니다.
샘플 애플리케이션 복제
샘플 애플리케이션을 열려면 다음 단계를 따르세요.
- Ktor 문서 저장소를 복제하고 codeSnippets 프로젝트를 엽니다.
- embedded-server 또는 engine-main 샘플을 엽니다. 이 샘플들은 Ktor 서버 생성 및 구성에 대한 다른 접근 방식을 보여줍니다: 코드에서 또는 구성 파일을 사용하여. 이 프로젝트들을 배포할 때 유일한 차이점은 들어오는 요청을 수신하는 데 사용되는 포트를 지정하는 방법입니다.
애플리케이션 준비
1단계: 포트 구성
먼저, 들어오는 요청을 수신하는 데 사용될 포트를 지정해야 합니다. Elastic Beanstalk는 5000번 포트에서 애플리케이션으로 요청을 전달합니다. 선택적으로, PORT
환경 변수를 설정하여 기본 포트를 재정의할 수 있습니다. Ktor 서버를 구성하는 방식에 따라 다음 방법 중 하나로 포트를 구성할 수 있습니다.
서버 구성이 코드에 지정된 embedded-server 샘플을 선택한 경우,
System.getenv
를 사용하여 환경 변수 값을 얻거나, 환경 변수가 지정되지 않은 경우 기본값인 _5000_을 사용할 수 있습니다.src/main/kotlin/com/example
폴더에 있는Application.kt
파일을 열고embeddedServer
함수의port
매개변수 값을 아래와 같이 변경합니다.kotlinfun main() { embeddedServer(Netty, port = (System.getenv("PORT")?:"5000").toInt()) { // ... }.start(wait = true) }
서버 구성이
application.conf
파일에 지정된 engine-main 샘플을 선택한 경우,${ENV}
구문을 사용하여 환경 변수를port
매개변수에 할당할 수 있습니다.src/main/resources
에 있는application.conf
파일을 열고 아래와 같이 업데이트합니다.ktor { deployment { port = 5000 port = ${?PORT} } }
2단계: Ktor 플러그인 적용
이 튜토리얼은 fat JAR를 사용하여 Elastic Beanstalk에 애플리케이션을 배포하는 방법을 보여줍니다. fat JAR를 생성하려면 Ktor 플러그인을 적용해야 합니다. build.gradle.kts
파일을 열고 plugins
블록에 플러그인을 추가합니다.
plugins {
id("io.ktor.plugin") version "3.2.3"
}
그런 다음, 메인 애플리케이션 클래스가 구성되었는지 확인합니다.
application {
mainClass.set("io.ktor.server.netty.EngineMain")
}
Fat JAR 빌드
Fat JAR를 빌드하려면 터미널을 열고 Ktor 플러그인이 제공하는 buildFatJar
태스크를 실행합니다.
이 빌드가 완료되면 build/libs
디렉터리에서 aws-elastic-beanstalk-all.jar
파일을 볼 수 있습니다.
애플리케이션 배포
애플리케이션을 배포하려면 AWS Management Console에 로그인하고 다음 단계를 따르세요.
- AWS 서비스 그룹에서 Elastic Beanstalk 서비스를 엽니다.
- 열린 페이지에서 애플리케이션 생성을 클릭합니다.
- 다음 애플리케이션 설정을 지정합니다.
- 애플리케이션 이름: 애플리케이션 이름을 지정합니다 (예: Sample Ktor app).
- 플랫폼: 목록에서 _Java_를 선택합니다.
- 플랫폼 브랜치: _Corretto 11 running on 64bit Amazon Linux 2_를 선택합니다.
- 애플리케이션 코드: _코드 업로드_를 선택합니다.
- 소스 코드 원본: _로컬 파일_을 선택합니다. 그런 다음 파일 선택 버튼을 클릭하고 이전 단계에서 생성된 Fat JAR를 선택합니다. 파일이 업로드될 때까지 기다립니다.
- 애플리케이션 생성 버튼을 클릭하고 Beanstalk가 환경을 생성하고 애플리케이션을 게시할 때까지 몇 분 정도 기다립니다.
INFO Instance deployment completed successfully. INFO Application available at Samplektorapp-env.eba-bnye2kpu.us-east-2.elasticbeanstalk.com. INFO Successfully launched environment: Samplektorapp-env