Kotlin에서 AWS Lambda 쓰기!

8872 단어 람다gradleKotlinAWS

1 처음에



매번 친숙한 참고원
AWS Lambda에서 Kotlin 코드 이동

경위로서는 다른 기사에서 Kotlin의 공부를 시작했습니다만, 단지 AWS도 사용하고 있었던 적도 있어
뭐라면 AWS도 Kotlin에서! 라고 생각한 대로입니다.

개발 환경
· 이클립스
· Gradle IDE Pack
· Kotlin Plugin for Eclipse

2 했던 일



· 우선 보통으로 Gradle의 신규 프로젝트를 만든다
· build.gradle을 즐겨보십시오.
 →Gradle 사용한 적이 없었기 때문에 솔직히 이것이 가장 어려웠다

간단하지만 다음과 같이
세세한 곳은 아직 이해가 따라잡지 않았다. . .

build.gradle
/*
 * This build file was generated by the Gradle "init" task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.3/userguide/java_library_plugin.html
 */

// Apply the java-library plugin to add support for Java Library

//プロジェクト自体のバージョン
version = "1.0"

//buildscript:ビルドスクリプト自体が依存しているライブラリなどを指定するブロック
buildscript {
    ext.kotlin_version = "1.3.10"
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

//ビルド設定で利用するプラグインの宣言です。apply plugin: java とすると java のプラグインが適用
apply plugin: "java-library"
apply plugin: "java"
apply plugin: "kotlin"


//プロジェクトのソースセットには、sourceSetsプロパティを使ってアクセスすることができます。
sourceSets {
    main.kotlin.srcDirs += "src/main/kotlin"
    main.java.srcDirs += "src/main/java"
}


//プロジェクトとしての依存ライブラリを指定してます。
//compile やら testCompile やらは Maven での <scope> にあたるものになります。
repositories {
    mavenCentral()
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api "org.apache.commons:commons-math3:3.6.1"

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation "com.google.guava:guava:23.0"
    compile fileTree(dir: "lib", include: "*.jar")

    // Use JUnit test framework
    testImplementation "junit:junit:4.12"
        compile (
            "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version",
            "com.amazonaws:aws-java-sdk-lambda:1.11.455",
            "com.amazonaws:aws-lambda-java-core:1.2.0",
            "com.googlecode.json-simple:json-simple:1.1.1",
    )
    testCompile group: "junit", name: "junit", version: "4.11"
}


//ビルドの設定を行うスクリプト
//from compileKotlinでkotlinのコンパイル完了物をさらうイメージ??
//lib配下にライブラリ等を入れるとlambda実行時に参照できるらしい
task buildZip(type: Zip) {
    from compileKotlin
    from processResources
    into("lib") {
         from configurations.runtime
    }
}

//dependsOn メソッドを使用することで、タスク間に依存関係を持たせることができます。
//下記だとbuildコマンドを実行する前にbuildZipをやるという意味らしい
build.dependsOn buildZip


· 하나의 간단한 소스 만들기
숫자 인수를 받고 3배로 반환

App.kt
import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.LambdaLogger

public class App {
    public fun handler(count: Int, context: Context): String {
        val lambdaLogger = context.getLogger()
        lambdaLogger.log("Kotlinモジュールですよ!!!\n")
        lambdaLogger.log("count = " + count +"\n")
        lambdaLogger.log("インプットの3倍の値が出てきますよ!、テストパラメタは全て第一引数に入ってくるようです。\n")
        return "${count * 3}"
    }
}

· Gradle 작업에서 clean → build
→build\distributions 아래에 Zip으로 굳어지기 때문에 그것을 Lambda에 수동으로 업로드

· 막상 테스트 실행, 파라미터는 또 하나로 좋다
→ 런타임은 Java8입니다.


· 실행 후


오, 괜찮지 않습니까?
의도한 대로 움직여 주네요.

3 마지막으로



이번은 초간단한 것 밖에 동작 확인하고 있습니다만, 이쪽도 후일 여러가지 시험해 보고 싶습니다.
그때까지 더 공부합니다.

※2019/1/1 갱신
모 사이트에서이 Kotlin에서 Lambda를 만드는 병아리를 만들었습니다.
진정되면 어딘가의 타이밍에 여기에서도 공개하려고 생각합니다.

좋은 웹페이지 즐겨찾기