[kotlin] 코틀린 웹 서버를 AWS Lambda로 배포하는 방법
AWS Lambda는 서버리스 아키텍처를 구현하는 데 사용되는 서비스로, 코틀린으로 작성된 웹 서버를 배포하여 더 쉽고 간단하게 관리할 수 있습니다. 이 포스트에서는 코틀린으로 작성된 웹 서버를 AWS Lambda에 배포하는 방법을 알아보겠습니다.
1. AWS Lambda 설정
먼저 AWS 콘솔에 로그인하고 AWS Lambda 서비스로 이동합니다.
- 새로운 함수를 생성하려면 함수 만들기 버튼을 클릭합니다.
- 서버리스 애플리케이션은 대부분 서버리스 애플리케이션 모델을 선택하고, 애플리케이션 이름을 지정합니다.
- 런타임 드롭다운에서 “Java 11”을 선택합니다. (Kotlin은 Java 8+에서 작동합니다.)
- 실행 역할을 지정하고, 필요한 권한을 부여합니다.
2. 코틀린 웹 서버 코드 작성
코틀린으로 웹 서버를 작성하기 위해 Ktor 프레임워크를 사용합니다.
fun Application.module() {
routing {
get("/") {
call.respondText("Hello, AWS Lambda!", contentType = ContentType.Text.Plain)
}
}
}
fun main() {
embeddedServer(Netty, port = 8080, module = Application::module).start(wait = true)
}
위의 코드는 루트 경로로 요청이 들어올 경우 “Hello, AWS Lambda!”라는 텍스트를 응답하는 간단한 웹 서버를 작성한 예시입니다.
3. 배포 스크립트 작성
AWS Lambda에 배포하기 위해 적절한 배포 스크립트를 작성해야 합니다. AWS CLI를 사용하여 배포할 수 있습니다.
#!/bin/bash
./gradlew build
aws lambda create-function \
--function-name MyServerlessApp \
--runtime java11 \
--zip-file fileb://build/libs/my-serverless-app.jar \
--handler com.example.myserverlessapp.ApplicationKt::handleRequest \
--role arn:aws:iam::1234567890:role/lambda-execution-role
aws lambda update-function-configuration \
--function-name MyServerlessApp \
--timeout 30 \
aws lambda invoke \
--function-name MyServerlessApp \
--payload '{"httpMethod": "GET", "path": "/"}' \
response.json
위의 스크립트에서는 먼저 프로젝트를 빌드한 다음, aws lambda create-function
명령을 사용하여 함수를 생성합니다. --zip-file
은 프로젝트 JAR 파일의 경로를 지정하고, --handler
는 AWS Lambda에서 실행될 엔트리 포인트를 지정합니다.
4. 배포
배포 스크립트를 실행하여 AWS Lambda에 코틀린 웹 서버를 배포합니다.
./deploy.sh
5. 테스트
AWS Lambda에 성공적으로 배포되었다면 테스트해보세요. aws lambda invoke
명령을 사용하여 테스트할 수 있습니다.
aws lambda invoke \
--function-name MyServerlessApp \
--payload '{"httpMethod": "GET", "path": "/"}' \
response.json
response.json
파일에 응답이 저장되어 있습니다. 웹 서버가 정상적으로 실행되고 응답이 도착하는지 확인하세요.