2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KotlinのローカルAWS Lambdaをデバッグ実行しました。

Last updated at Posted at 2019-06-30

お疲れ様です。@naokiurです。
最近の業務中は、AWS Lambdaを構築しております。

業務中はPythonで書いているのですが、
前々から興味のあるKotlinでもやりたいなあと思い、
AWS Toolkit for Intellijを用いて、
ローカルでデバッグ実行できるように、
準備しました。

AWS Toolkitプラグインを導入している場合、
AWS Serverless Applicationプロジェクトを作ることができるのですが、
どんなKotlinプロジェクトの場合でもLambdaを作成することができるようになるために、
なんの変哲もないKotlinプロジェクト上で、
準備しました。

環境

  • MacBook Pro (Retina 13-inch、Early 2015)
  • Java 1.8.0_191
  • IntelliJ IDEA CE 2019.1.3
  • SAM CLI 0.14.2

実施したこと

  • なんの変哲もないKotlinプロジェクトを用意する
  • AWS SUM CLIで雛形を生成する
  • Kotlin・Lambdaの構成を整える
  • Runnerを作成する
  • 実行!

なんの変哲もないKotlinプロジェクトを用意する

なんの変哲もないKotlinプロジェクトを作成します。

01.no-strange-kotlin-project.png

なんの変哲もないですね。

AWS SUM CLIで雛形を生成する

AWS Toolkitプラグインは、 AWS SAM CLIを前提としているので、
インストールされていると思います。

せっかくなので、AWS SAM CLIに雛形を作成してもらいます。

sam init -r java8 -d gradle
02.sam-init.png

Kotlin・Lambdaの構成を整える

ソース移動

作成してもらった雛形の以下ファイルを、
任意のパッケージに移動します。

  • App.java
  • GatewayResponse.java
03.move-java-file.png

依存性追加

ライブラリの依存関係をgradleファイルに追加します。

gradle.build
dependencies {
    implementation "com.amazonaws:aws-lambda-java-core:1.2.0" // 追加
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}

ありがたいことにIntellijが教えてくれるので、
import changeをします。

04.import-change.png

Kotlin変換

移動したファイルをKotlinコードに変換します。
こちらもありがたいことにIntellijがやってくれます。

05.convert-kotlin.png
自分が試した際、App.ktでコンパイルエラーが発生しまっていたので、こちらを修正しました。
* return br.lines().collect<String, *>(Collectors.joining(System.lineSeparator()))
* return br.lines().collect(Collectors.joining(System.lineSeparator()))

Runnerを作成する

Lambda実行用のRunnerを作成します。

06.runner-config-template.png

Handlerには変換したAppクラスを指定します。

07.runner-config-content.png

実行!

デバッグ実行します。

08.debug.png

ブレークポイントで止まりました!!

これでKotlinでも、
ローカルでLambda開発ができますね!

結果

  • Kotlinで書かれたLambdaを、ローカルでデバッグ実行することができました。

今後

  • デプロイできるかをまだ試せてないので、試していきたいと思います。
  • テストコードを書けるようになっていきたいと思います。
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?