在 AWS Lambda 上运行你的 Vapor 应用。此软件包桥接了 swift-aws-lambda-runtime
和 Vapor 框架之间的通信。APIGateway 请求被转换为 Vapor.Request
,而 Vapor.Response
被写回 APIGateway。它的目的是将 aws-lambda-go-api-proxy
的功能引入 Vapor。
注意:目前这仅仅是一个概念验证。使用风险自负。如果您试用过,我希望听到您的反馈。请针对您遇到的所有未解决的问题提交 GitHub issue。
我已测试
可能还有很多其他事情我们应该测试。到目前为止,我对 Vapor 了解不多。因此,您需要帮助我列出需要测试的内容。
示例
如果您测试了任何内容,请提交 PR,以便我们可以更好地记录当前状态。一个非常小的示例会更好。我计划使用示例创建一些集成测试。
将 vapor-aws-lambda-runtime
和 vapor
作为依赖项添加到你的项目。为此,请打开你的 Package.swift
dependencies: [
.package(url: "https://github.com/vapor/vapor.git", .upToNextMajor(from: "4.0.0")),
.package(url: "https://github.com/fabianfett/vapor-aws-lambda-runtime", .upToNextMajor(from: "0.4.0")),
]
将 VaporLambdaRuntime 作为依赖项添加到你的 target
targets: [
.target(name: "Hello", dependencies: [
.product(name: "Vapor", package: "vapor"),
.product(name: "VaporAWSLambdaRuntime", package: "vapor-aws-lambda-runtime")
]),
]
创建一个简单的 Vapor 应用。
import Vapor
import VaporAWSLambdaRuntime
let app = Application()
struct Name: Codable {
let name: String
}
struct Hello: Content {
let hello: String
}
app.get("hello") { (_) -> Hello in
Hello(hello: "world")
}
app.post("hello") { req -> Hello in
let name = try req.content.decode(Name.self)
return Hello(hello: name.name)
}
接下来,我们只需要运行 vapor 应用。为了能够在 Lambda 中运行,我们需要更改 "serve" 命令。然后我们可以通过调用 app.run()
启动应用
app.servers.use(.lambda)
try app.run()
请随意并鼓励您为 vapor-aws-lambda-runtime 做出贡献。当前版本距离生产使用还有很长的路要走,非常欢迎帮助。
如果您发现了 bug,有建议或需要入门帮助,请提交 Issue 或 PR。如果您使用此包,我将非常感谢您分享您的经验。
如果您喜欢这个项目,我对 GitHub stars 感到兴奋。 🤓