#100DaysOfWeb in Python Transcripts
Chapter: Days 85-88: Serverless Python with AWS Lambda
Lecture: First Lambda: a simple calculator (using operator)

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Now it's time to get to the core of this lesson and that's to define a Lambda function. I'm logged into AWS Web Services
0:11 and I'm at the management console. I already have some Lambdas here. To create a new one, use the create function button. There are several options
0:25 but I usually author them from scratch. You have to give your Lambda a name so let's call it Calculator, because as I mentioned in the previous video
0:36 we're going to go with the simple one first because the fact check will require external dependencies so that will be a more advanced use case
0:45 which I'm eager to teach you as well. For the run time, recently they upgraded to 3.7 so that's the preferred Python I would use
0:55 and I already set up a role previously but if this is the first time you visit AWS Lambda you can create a new role from one or more templates.
1:06 You can call it then anything you want. For example, Lambda role and for policy you can use simple microservice permissions.
1:23 And that's it. Then we click on Create Function and we get into this new screen and AWS gives us some default code. And it's pretty simple.
1:38 A Lambda function is just a function that receives an event and a context if not really used context, but event is where you get your payload from
1:47 and you do your implementation, calculations whatever you want to do, and you return a dict like object with status code and body.
1:57 And we've seen in the Bottle app that I was parsing out those two elements. Now to do a simple calculator, I define one.
2:06 So we import operator, we define a couple of calculations: adding, subtraction, multiplication, and division.
2:15 Here's your Lambda handler as well as provided with the default code. We get the code attribute from the event object that's passed in.
2:22 Remember from our Bottle app, when we made the post request? Here's the other side of that equation. So the Lambda receives the event
2:31 and here we extract that code attribute from that dictionary. So here the Lambda receives the data that's passed in
2:38 we set a default status code of OK 200 and then we try to do some calculations. So the code passed in will be something like two plus two.
2:50 We try to split that into the first number the sign, and the second number then we get the actual operator from the dictionary.
2:57 So we look up the sign, plus, minus, etc. and we get back this function which we then call with the first and the second number.
3:06 So this basically, if I give it two plus two it's almost like an eval of two plus two. And basically that's the math. And then, start a return value
3:18 but if that data was provided so we get a key error or a value error sample. If we provide a, b, c, then this split, of course
3:27 will complain that there are not enough elements to put into these three variables. I can also have a zero division error, if I pass it
3:36 for example, one divided by zero. So those are tested exceptions and I catch 'em all on this line and if there's an exception, I just return
3:45 the exception string to get our status code 400. Then I return a dict of status code with whatever came out which could be OK or not OK, and the body
3:55 which is the return value, which could be the result of the calculation or the exception string. And that's it, really. I mean, there are more options.
4:04 You can tweak them but usually the defaults are just what you want. A memory consumption of 128 meg and a time out of three seconds.
4:13 If your calculations are more intensive for example, in code challenges we recently supported PEMDAS, and we had to bump up
4:20 this time out to 20 or even 30 seconds because that library just takes more time to run. So we can tweak that here under Basic Settings.
4:29 For example, this should suffice. So we click Save and next video we'll see how we can define test events
4:36 so we can test our Lambda from this GUI interface.

Talk Python's Mastodon Michael Kennedy's Mastodon