Over a million developers have joined DZone.

AWS Lambda: Programatically Create a Python ‘Hello World’ Function

DZone's Guide to

AWS Lambda: Programatically Create a Python ‘Hello World’ Function

In this post we take a look at how to quickly create a Python function using AWS Lambda, including their configurations and uploading them to the service.

· Cloud Zone ·
Free Resource

Learn how to migrate and modernize stateless applications and run them in a Kubernetes cluster.

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:

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:

$ zip HelloWorld.zip HelloWorld.py
$ 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.

import boto3

lambda_client = boto3.client('lambda')

fn_name = "HelloWorld"
fn_role = 'arn:aws:iam::[your-aws-id]:role/lambda_basic_execution'

    Code={'ZipFile': open("{0}.zip".format(fn_name), 'rb').read(), },

[your-aws-id] 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:

$ aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text

Now we can create our function:

$ python CreateHelloWorld.py

2017 04 02 23 07 38

And if we test the function, we’ll get the expected output:

2017 04 02 23 02 59

Join us in exploring application and infrastructure changes required for running scalable, observable, and portable apps on Kubernetes.

aws lambda ,python ,cloud ,tutorial ,serverless

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}