Skip to content

AWS Elastic Beanstalk

初期プロジェクト: embedded-server または engine-main

最終プロジェクト: aws-elastic-beanstalk

このチュートリアルでは、Ktorアプリケーションを準備し、AWS Elastic Beanstalkにデプロイする方法を説明します。Ktorサーバーを作成する方法に応じて、以下のいずれかの初期プロジェクトを使用できます。

Javaアプリケーションのデプロイについての詳細は、Elastic Beanstalkのドキュメントを参照してください。

前提条件

このチュートリアルを開始する前に、AWSアカウントを作成する必要があります。

サンプルアプリケーションのクローン

サンプルアプリケーションを開くには、以下の手順に従います。

  1. Ktorドキュメントのリポジトリをクローンし、codeSnippets プロジェクトを開きます。
  2. embedded-server または engine-main サンプルを開きます。これらのサンプルは、コード内または設定ファイルを使用して Ktorサーバーを作成および設定するための、異なるアプローチを示しています。これらのプロジェクトをデプロイする際の唯一の違いは、着信リクエストをリッスンするために使用する ポートの指定方法 です。

アプリケーションの準備

ステップ 1: ポートを設定する

まず、着信リクエストをリッスンするために使用するポートを指定する必要があります。Elastic Beanstalkは、ポート 5000 でアプリケーションにリクエストを転送します。オプションで、PORT 環境変数を設定することでデフォルトのポートをオーバーライドできます。Ktorサーバーを設定する方法に応じて、以下のいずれかの方法でポートを設定できます。

  • コードでサーバー設定を指定する embedded-server サンプルを選択した場合は、System.getenv を使用して環境変数の値を取得するか、環境変数が指定されていない場合はデフォルトの 5000 の値を使用できます。src/main/kotlin/com/example フォルダにある Application.kt ファイルを開き、以下に示すように embeddedServer 関数の port パラメータ値を変更します。

    kotlin
    fun main() {
       embeddedServer(Netty, port = (System.getenv("PORT")?:"5000").toInt()) {
       // ...
       }.start(wait = true)
    }
  • application.conf ファイルでサーバー設定を指定する engine-main サンプルを選択した場合は、${ENV} 構文を使用して port パラメータに環境変数を割り当てることができます。src/main/resources にある application.conf ファイルを開き、以下のように更新します。

    ktor {
        deployment {
            port = 5000
            port = ${?PORT}
        }
    }

ステップ 2: Ktorプラグインを適用する

このチュートリアルでは、fat JAR を使用してアプリケーションを Elastic Beanstalk にデプロイする方法を示します。fat JARを生成するには、Ktorプラグインを適用する必要があります。build.gradle.kts ファイルを開き、plugins ブロックにプラグインを追加します。

groovy
plugins {
    id("io.ktor.plugin") version "3.4.3"
}

次に、メインアプリケーションクラスが設定されていることを確認してください。

kotlin
application {
    mainClass.set("io.ktor.server.netty.EngineMain")
}

Fat JAR のビルド

Fat JARをビルドするには、ターミナルを開き、Ktorプラグインによって提供される buildFatJar タスクを実行します。

このビルドが完了すると、build/libs ディレクトリに aws-elastic-beanstalk-all.jar ファイルが確認できるはずです。

アプリケーションのデプロイ

アプリケーションをデプロイするには、AWS マネジメントコンソールにサインインし、以下の手順に従います。

  1. AWS サービスグループの Elastic Beanstalk サービスを開きます。
  2. 開いたページで、アプリケーションの作成 (Create Application) をクリックします。
  3. 以下のアプリケーション設定を指定します。
    • アプリケーション名 (Application name): アプリケーション名を指定します (例: Sample Ktor app)。
    • プラットフォーム (Platform): リストから Java を選択します。
    • プラットフォームブランチ (Platform branch): Corretto 11 running on 64bit Amazon Linux 2 を選択します。
    • アプリケーションコード (Application code): コードのアップロード (Upload your code) を選択します。
    • ソースコードのオリジン (Source code origin): ローカルファイル (Local file) を選択します。次に、ファイルの選択 (Choose file) ボタンをクリックし、前のステップで生成した Fat JAR を選択します。ファイルがアップロードされるまで待ちます。
  4. アプリケーションの作成 (Create application) ボタンをクリックし、Beanstalk が環境を作成してアプリケーションを公開するまで数分待ちます。
    INFO    Instance deployment completed successfully.
    INFO    Application available at Samplektorapp-env.eba-bnye2kpu.us-east-2.elasticbeanstalk.com.
    INFO    Successfully launched environment: Samplektorapp-env