Holy lambda is a micro framework which adds support for running Clojure on the AWS Lambda and might be used with arbitrary AWS Lambda deployment tool. Holy lambda provides very convenient environment compared to other tools such as uswitch/lambada or babashka-lambda via simple, but powerful bb tasks
recipes eg. deployment is as easy as running bb stack:sync && bb stack:compile && bb stack:pack && bb stack:deploy
).
Holy lambda supports
Prior work towards targeting Java runtime was done by uswitch/lambada, but lacked being convienient. Holy lambda in the other hand is very convenient and does things which lambada lacked:
deflambda
OutputStream
.I've started experimenting with native runtime around May 2019 inspired by @hjhamala blog post. At that time Clojure community just started experimenting with GraalVM, and there was not such great tools as babashka, therefore holy-lambda is not babashka based. There are some benefits of not using babashka and some tradeoffs which have to be understood before taking a right decision.
Benefits
Tradeoffs
bb native:conf
)sam invoke
or bb stack:invoke
Babashka runtime provides interactive development environment. There is no need for compiling the sources since those are provided as is to AWS SAM
.
Runtime | Cold start | Performance | Artifacts size | Memory Consumption | Interactive | Compile time |
---|---|---|---|---|---|---|
:native | low | high | high >= 16mb | low | No | very long |
:babashka | low | moderate | low >= 50kb | low | Yes | no compile |
:java | high | high | moderate >= 12mb | high | No | long |
If you're not interested in trying holy-lambda out then you can check very minimal babashka runtime :) babashka-lambda.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close