Gordon: a tool to create, wire and deploy AWS Lambdas
github.com
github.com
No need to look so far. The logo for Half-Life was always the Greek letter lambda (certainly because it's often used in physics and chemistry to represent the decay constant, which is a simple function of half-life). And that level is probably just named in keeping with the game's identity.
I still remember when my chemistry teacher first drew a lambda on the chalkboard and said "this will give us the half-life". I felt like all the pieces finally came together in my life.
Yes, I know that defeats the point of using lambda, but I felt the joke was worth it.
i would like to see an libre software serverless service. one huge concern of AWS Lambda is being locked into AWS's goodwill.
Also, I just had the thought that a crowbar is a type of lever... not sure if that was intended or not?
https://github.com/johnwheeler/flask-ask.
Can you please explain any differences over Zappa and if you're deploying flask?
Oh, and the project name is oh so damn cool.
Gordon looks interesting and I'm definitely going to check it out, but from what I can tell, one of the downsides is that it uses CF.
Don't get me wrong, I love CF for it's reproducibility, but waiting for a CF stack to run on every deploy will be frustrating for rapid iteration. CF is great for managing your infrastructure once you have a good idea of how it should look and aren't making constant changes anymore.
I suspect my workflow will be something like using Kappa while I'm iterating, and then using Gordon for the final deployment once it looks like everything is working as expected.
It sort of does custom aliases by giving the function an alias with the environment name, but that probably isn't what you want.
What I need to make sure of is that all the lambda functions / roles are updated before the starter so that the workflow doesn't break, as there could be breaking changes between commits.
A suggestion would be to create a repo per lambda function, but that becomes a hassle to manage after a few dozen, and just throws in even more work on ensuring the order of updates necessary. It is easier to flow between commit versions.
The main reason I don't use serverless is because it's geared towards web development -- the lambdas and the api gateway are tied together. Most of what I'm doing is not web based.
I'm particularly excited about the CloudFormation support.
If you're managing stuff on AWS without CloudFormation you're missin out on one of the most powerful features of the platform.
CF can be pretty hard to use, which is why I love seeing OSS projects that solved the tedious parts of it for all of us to use.
I think the people from serverless (and apex) are doing an amazing job evangelizing about the benefits of server-less infrastructures and they have amazing projects they should be quite proud of.
Than been said, I think both projects walk different paths in order to achieve similar goals.
What is different with other approaches?
* Isolation is one of the most important things for us. Each of the stages of your application are deployed into independent Cloudformation stacks.
* We don't stream commands to the AWS api. Every single of your resources are created using CF.
* We respect the tooling of each of the runtimes so javascript, java or python developers should not get exposed to software they are not use to.
* Convention over configuration. Perhaps this is because my background is the Python/Django ecosystem, but writing 200 lines configuration files in JSON feels completely wrong to me.
* Documentation documentation documentation: Again, perhaps I've been badly educated by the Django community, but documentation and examples are (for me) the most important thing a project like this should have. That's why gordon's documentation is quite complete (I would say) and we have more than 20 example project including integrations with Slack, Telegram, Twilio... and AWS services such as Kinesis, Dynamodb, Apigateway, S3, Cloudwatch Events, Cloudwatch Scheduled Events, etc...
I think is an amazing moment to be involved in the server-less community and we'll all benefit from a thriving ecosystem like this :D
Most of us have become used to frameworks like express for specifying our routes and manually specifying API gateway rules feels like a huge step backwards.