AWS Elastic Beanstalk
初始项目: embedded-server 或 engine-main
最终项目: aws-elastic-beanstalk
在本教程中,我们将向你展示如何准备 Ktor 应用程序并将其部署到 AWS Elastic Beanstalk。你可以根据创建 Ktor 服务器的方式,使用以下初始项目之一:
关于部署 Java 应用程序的更多信息,请参阅 Elastic Beanstalk 文档。
先决条件
在开始本教程之前,你需要创建一个 AWS 账户。
克隆示例应用程序
要打开示例应用程序,请按照以下步骤操作:
- 克隆 Ktor 文档版本库,然后打开 codeSnippets 项目。
- 打开 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
参数值:kotlinfun 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
代码块中:
plugins {
id("io.ktor.plugin") version "3.2.3"
}
然后,确保已配置主应用程序类:
application {
mainClass.set("io.ktor.server.netty.EngineMain")
}
构建 Fat JAR
要构建 Fat JAR,请打开终端并执行由 Ktor 插件提供的 buildFatJar
任务:
此构建完成后,你会在 build/libs
目录中看到 aws-elastic-beanstalk-all.jar
文件。
部署应用程序
要部署应用程序,请登录 AWS Management Console 并按照以下步骤操作:
- 在 AWS 服务组中打开 Elastic Beanstalk 服务。
- 在打开的页面上,点击创建应用程序。
- 指定以下应用程序设置:
- 应用程序名称:指定应用程序名称(例如,Sample Ktor app)。
- 平台:从列表中选择 Java。
- 平台分支:选择 Corretto 11 running on 64bit Amazon Linux 2。
- 应用程序代码:选择 上传你的代码。
- 源代码来源:选择 本地文件。然后,点击选择文件按钮,选择在上一步中生成的 Fat JAR。等待文件上传完成。
- 点击创建应用程序按钮,等待几分钟,直到 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