/hello-sam

Kotlin 기반으로 AWS Lambda, API Gateway를 테스트 및 배포하는 샘플

Primary LanguageKotlinMIT LicenseMIT

hello-sam

importre.sample

Kotlin 기반으로 AWS Lambda, API Gateway를 테스트 및 배포하는 샘플

Prerequisites

Initialization

build.gradle.kts
sam {
    s3Bucket = "riiid-dev-hello"
    stackName = "hello-sam"
    "HelloSamFunction"(SamResource.Type.FUNCTION) {                     // (1)
        properties {
            handler = "com.importre.example.Hello::handleRequest"
            codeUri = "$buildDir/libs/${project.name}-$version-all.jar" // (2)
            runtime = SamResource.Properties.Runtime.JAVA8              // (3)
            events {
                "HelloSam"(SamEvent.Type.API) {                         // (4)
                    properties {
                        path = "/hello"
                        method = SamEvent.Properties.Method.GET
                    }
                }
            }
        }
    }
}
  1. 리소스가 함수면 타입 생략 가능 ("HelloSamFunction" { …​ })

  2. 생략 가능 (기본값: build/libs/${project.name}-$version-all.jar)

  3. 생략 가능 (기본값: java8)

  4. 이벤트 타입이 API면 생략 가능 ("HelloSam { …​ })

How to use

Test

shell
% ./gradlew test

SAM local

shell
% ./gradlew runLocalSamApp

Deployment

shell
% ./gradlew deploySamApp

내부적으로는 다음과 같이 실행됨

  1. clean(build 폴더 청소)

  2. shadowJar(jar 파일 생성)

  3. generateTemplateYaml(sam 기반으로 template.yamlbuild/generated에 생성)

  4. packageSamApp(sam package 명령 실행)

  5. deploySamApp(sam deploy 명령 실행)

References

Future works

  • sam에 모자른 SAM 스펙 구현하기 → Plugin으로 배포

    • 예외처리