32 comments

[ 4.6 ms ] story [ 49.1 ms ] thread
That's a bit long really.
That's not the function invocation time (i.e. cold start etc) but rather time to build and deploy (and then maybe imvoke?)
Looks nice!

1. Why go? (nothing wrong with it in itself, but last I had checked (before go on lambda was released)...Python was supposed the fastest of the bunch available)

1 a. Python can be embedded into a CF template...meaning deployment is slightly nicer (maybe not recommended though?)

2. I think the ability to change the time (20 secs) based on an SSM parameter would be cool!

1. I chose go since Lambda support was recently added for it. I have a lot of experience using Python and Node.js with Lambdas.

2. Sorry, I include the "20 Seconds" as a symbol of how easy it is to deploy!

Nice! Is there a use case for this, or is this just a go/terraform example? Either way, pretty cool!
I created this as a terraform example and chose go since it was recently added to Lambda.

I have a personal use case of this: pinging my heroku "dev" tier instance so it stays alive a bit longer.

Pretty neat. Instead of hard coding the url, you could provide it as parameter to the main. Pretty sure it’s possible (at least using the node and c# Lambda it was).
Dumb question, never used lambda before, how often is this triggered? I can’t tell at first look through the code.
The lambda doesn't have a schedule within because doing so would split the concerns poorly; rather you would hit this lambda on your own schedule.
An actual ping would be more impressive :)

Perhaps to be less wasteful, the HTTP request should be a HEAD instead of GET? There’s little point downloading a whole page if you are going to just throw away the contents...

actually, it's not. We create a special page, with PHP and one with nodejs, that just replies '1', so besides status, we also get a notice if nodejs or PHP malfunctions (which does happen on some servers, 1-2 time a year).
You can still do all that with HEAD, the only difference is you don't return a message body, thus saving 1 byte plus a few in the actual header you would not need any more.

For example; you would do a head request and node.js and php would still need to be configured to handled the HEAD request but instead of its handler returning "1" it would simply return.

Kind of a shame to have to hack on the source-code and inject a new URL - would have been better to have used a parameter. Anyway - here's how to do it with OpenFaaS and Python from August 2017 :-) https://blog.alexellis.io/first-faas-python-function/
Much nicer example I think and no AWS tax / lock-in.
What are the main benefits of using OpenFaaS except for vendor lock in? 99% of the time, I want a kinesis stream, or S3 event to start my lambdas, which it seems I would have to wire up myself
What's approx. monthly cost of running something like this on lambda e.g. every 5 minutes?
If you want to access it over HTTP you will have to pay for "AWS API Gateway" which is not free.
I'm curious about how AWS handles lambdas written in Go. Go produces statically linked Linux binaries. What is it about Go that is supported? What is it about binaries written in other languages that isn't supported?