Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin で AWS Lambda 動かしてみた Server-Side Kotlin Meetup vol.9 @Kaito-Dogi

Kotlin で AWS Lambda 動かしてみた Server-Side Kotlin Meetup vol.9 @Kaito-Dogi

2023/06/23 開催の Server-Side Kotlin Meetup に登壇させていただきました。

-----

Kotlin のサーバーレス・フレームワーク Kotless を使って、アプリケーションの実装から AWS Lambda へのデプロイまでを行ってみました。

Kaito-Dogi

June 23, 2023
Tweet

More Decks by Kaito-Dogi

Other Decks in Programming

Transcript

  1. AWS Lambda とは ❏ AWS のサーバーレスコンピューティングサービス ❏ AWS の他のサービスと連携 ❏

    Java のランタイムを提供 ❏ Kotlin も動かせるのでは…? ❏ Kotless というフレームワークがあるらしい!
  2. Kotless とは ❏ Kotlin のサーバレス‧フレームワーク ❏ JetBrains 社が開発 ❏ 2つの特徴

    ❏ DSL でアプリケーションを実装できる ❏ Kotless, Ktor, Spring Boot ❏ Gradle タスクでデプロイできる
  3. 下準備 ❏ S3 のバケットを作成 ❏ Terraform の tfstate ファイル ❏

    アプリケーションの jar ファイル ❏ AWS CLI のクレデンシャルを取得 ❏ 必要に応じて IAM ユーザーの作成
  4. Gradle ビルドファイルの編集 plugins { kotlin("jvm") version "1.6.10" apply true id("io.kotless")

    version "0.2.0" apply true } repositories { mavenCentral() maven(url = uri("https://packages.jetbrains.team/maven/p/ktls/maven")) } dependencies { implementation("io.kotless", "kotless-lang", "0.2.0") implementation("io.kotless", "kotless-lang-aws", "0.2.0") // 省略 } tasks.withType<KotlinCompile>() { kotlinOptions.jvmTarget = "11" } build.gradle.kts Kotlin 1.6.20 以上 未対応… Issue #121 参照 使⽤する DSL によって 必要な依存関係が異なる
  5. Gradle ビルドファイルの編集 kotless { config { aws { storage {

    bucket = "doggy-kotless-sample" } profile = "default" region = "us-east-1" } } webapp { lambda { kotless { packages = setOf("com.doggy.kotless.sample") } memoryMb = 1024 timeoutSec = 120 } } } build.gradle.kts 作成した S3 バケットの 名前を指定 取得した クレデンシャルを指定 アプリケーションの パッケージを指定 Kotless DSL のみ
  6. デプロイ % ./gradlew plan ~~ 省略 ~~ Plan: 14 to

    add, 0 to change, 0 to destroy. % ./gradlew deploy ~~ 省略 ~~ Apply complete! Resources: 14 added, 0 changed, 0 destroyed. Outputs: application_url = https://u7nx1b226c.execute-api.us-east-1.amazonaws.com/1 terminal Terraform の plan コマンドを実⾏ どのような変更が必要か確認 Terraform の apply コマンドを実⾏ 実際にインフラの構成を変更
  7. 使ってみた感想 ❏ AWS を触れて楽しかった😚 ❏ いろんなサービスを連携させたい! ❏ Kotless の開発⽌まってるのが残念… ❏

    最終リリースが 2021/10/19 ❏ 最近の Java や Kotlin のバージョンに対応していない ❏ 実際の開発では使えなそう😥 ❏ サーバーやインフラの勉強頑張りたい🔥 ❏ 初めて知ったことが多かった(Terraform など) ❏ Java や Gradle 周りをちゃんと理解したい😇
  8. ❏ サーバーレス‧コンピューティングとは | IBM https://www.ibm.com/jp-ja/topics/serverless ❏ Serverless Computing - AWS

    Lambda - Amazon Web Services https://aws.amazon.com/lambda/ ❏ Cloud Functions | Google Cloud https://cloud.google.com/functions ❏ サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 https://aws.amazon.com/jp/builders-flash/202003/awsgeek-serverless ❏ Kotlin Serverless Framework https://site.kotless.io/ ❏ JetBrains/kotless: Kotlin Serverless Framework https://github.com/JetBrains/kotless ❏ KotlessでKotlinのアプリケーションをAWS Lambdaにデプロイする https://blog.takehata-engineer.com/entry/deploy-kotlin-applications-to-aws-lambda-using-kotless ❏ Provisioning Infrastructure - Terraform CLI | Terraform | HashiCorp Developer https://developer.hashicorp.com/terraform/cli/run 参考記事