AWS Lambda API Gateway Support for Macro and MacroExpress (and all things built on-top).
It allows deployment of arbitrary Macro applications as AWS Lambda functions, including MacroApp endpoints.
Blog article: Deploying Swift on AWS Lambda.
The module is split into the MacroLambda
module,
which provides the Express runner (Lambda.run(express-app)
)
and MacroLambdaCore
which only links against http
and provides the
lambda.createServer
(the peer to http.createServer
).
There is a tutorial on getting started with those things: Create your first HTTP endpoint with Swift on AWS Lambda.
Note: The Swift Lambda Runtime requires Swift 5.2.
import MacroLambda
let app = Express()
app.use(bodyParser.text())
app.post("/hello") { req, res, next in
console.log("Client posted:", req.body.text ?? "-")
res.send("Client body sent: \(req.body.text ?? "~nothing~")")
}
app.get { req, res, next in
res.send("Welcome to Macro!")
}
Lambda.run(app)
Using swift lambda
(brew install SPMDestinations/tap/swift-lambda
):
$ swift lambda deploy -d 5.2
Tutorial available: Deploying Swift on AWS Lambda.
macro.core.numthreads
macro.core.iothreads
macro.core.retain.debug
macro.concat.maxsize
macro.streams.debug.rc
- Deploying Swift on AWS Lambda
- WWDC 2020: Use Swift on AWS Lambda with Xcode
- Tutorial: Create your first HTTP endpoint with Swift on AWS Lambda
- Swift AWS Lambda Runtime
- Amazon Web Services API Gateway
- µExpress
- SwiftNIO
Macro is brought to you by Helge Heß / ZeeZide. We like feedback, GitHub stars, cool contract work, presumably any form of praise you can think of.
There is a #microexpress
channel on the
Noze.io Slack. Feel free to join!