vapor-aws-lambda-runtime

Swift 5.2 Vapor 4 github-actions codecov

在 AWS Lambda 上运行你的 Vapor 应用。此软件包桥接了 swift-aws-lambda-runtimeVapor 框架之间的通信。APIGateway 请求被转换为 Vapor.Request,而 Vapor.Response 被写回 APIGateway。它的目的是将 aws-lambda-go-api-proxy 的功能引入 Vapor。

状态

注意:目前这仅仅是一个概念验证。使用风险自负。如果您试用过,我希望听到您的反馈。请针对您遇到的所有未解决的问题提交 GitHub issue。

我已测试

可能还有很多其他事情我们应该测试。到目前为止,我对 Vapor 了解不多。因此,您需要帮助我列出需要测试的内容。

示例

如果您测试了任何内容,请提交 PR,以便我们可以更好地记录当前状态。一个非常小的示例会更好。我计划使用示例创建一些集成测试。

用法

vapor-aws-lambda-runtimevapor 作为依赖项添加到你的项目。为此,请打开你的 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 感到兴奋。 🤓