AWS Lambda: Programatically create a Python 'Hello World' function
I’ve been playing around with AWS Lambda over the last couple of weeks and I wanted to automate the creation of these functions and all their surrounding config.
Let’s say we have the following Hello World function: ~python def lambda_handler(event, context): print("Hello world") ~
To upload it to AWS we need to put it inside a zip file so let’s do that: ~bash $ zip HelloWorld.zip HelloWorld.py ~ ~bash $ unzip -l HelloWorld.zip Archive: HelloWorld.zip Length Date Time Name -------- ---- ---- ---- 61 04-02-17 22:04 HelloWorld.py -------- ------- 61 1 file ~
Now we’re ready to write a script to create our AWS lambda function. ~python import boto3 lambda_client = boto3.client('lambda') fn_name = "HelloWorld" fn_role = 'arn:aws:iam::[your-aws-id]:role/lambda_basic_execution' lambda_client.create_function( FunctionName=fn_name, Runtime='python2.7', Role=fn_role, Handler="{0}.lambda_handler".format(fn_name), Code={'ZipFile': open("{0}.zip".format(fn_name), 'rb').read(), }, ) ~
needs to be replaced with the identifier of our AWS account. We can find that out be running the following command against the AWS CLI: ~bash $ aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text 123456789012 ~
Now we can create our function: ~bash $ python CreateHelloWorld.py ~
And if we test the function we’ll get the expected output:
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.