0
0
AWScloud~5 mins

Creating a Lambda function in AWS - Step-by-Step CLI Walkthrough

Choose your learning style9 modes available
Introduction
Sometimes you want your code to run automatically when something happens, like a file upload or a timer. AWS Lambda lets you run your code without managing servers, so you only focus on your code and AWS handles the rest.
When you want to run a small piece of code in response to an event like a file upload or a message.
When you want to avoid managing servers and only pay for the time your code runs.
When you want to quickly deploy backend code for a web or mobile app without infrastructure setup.
When you want to automate tasks like image resizing or data processing triggered by other AWS services.
When you want to build a simple API backend without managing servers.
Config File - lambda_function.zip
lambda_function.zip
This is a zip file containing a single Python file named lambda_function.py with the following content:

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': 'Hello from Lambda!'
    }

This zip file is the deployment package for the Lambda function.

The lambda_function.py file contains the code AWS Lambda will run. The lambda_handler function is the entry point. AWS Lambda runs this function when triggered.

The zip file is uploaded to AWS Lambda to create the function.

Commands
This command creates a new Lambda function named 'my-lambda-function' using Python 3.9. It uses the specified IAM role for permissions, sets the handler to the lambda_handler function inside lambda_function.py, and uploads the code from the zip file.
Terminal
aws lambda create-function --function-name my-lambda-function --runtime python3.9 --role arn:aws:iam::123456789012:role/lambda-execution-role --handler lambda_function.lambda_handler --zip-file fileb://lambda_function.zip
Expected OutputExpected
{ "FunctionName": "my-lambda-function", "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function", "Runtime": "python3.9", "Role": "arn:aws:iam::123456789012:role/lambda-execution-role", "Handler": "lambda_function.lambda_handler", "CodeSize": 123, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2024-06-01T12:00:00.000+0000", "CodeSha256": "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz567", "Version": "$LATEST", "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "1a2b3c4d-5678-90ab-cdef-EXAMPLE11111" }
--function-name - Sets the name of the Lambda function.
--runtime - Specifies the language runtime environment.
--role - Defines the IAM role that Lambda assumes when running the function.
--handler - Specifies the entry point function in the code.
--zip-file - Uploads the zipped code package.
This command runs the Lambda function named 'my-lambda-function' and saves the output to a file named output.txt to verify it works.
Terminal
aws lambda invoke --function-name my-lambda-function output.txt
Expected OutputExpected
{ "StatusCode": 200, "ExecutedVersion": "$LATEST" }
--function-name - Specifies which Lambda function to run.
This command shows the content of the output.txt file to see the Lambda function's response.
Terminal
cat output.txt
Expected OutputExpected
{"statusCode": 200, "body": "Hello from Lambda!"}
Key Concept

If you remember nothing else from this pattern, remember: AWS Lambda runs your code in response to events without needing servers, and you create it by uploading your code and setting a handler.

Common Mistakes
Using the wrong handler name in the create-function command.
Lambda won't find the entry point and will fail to run your code.
Make sure the handler flag matches the filename and function name exactly, like 'lambda_function.lambda_handler'.
Not assigning the correct IAM role with execution permissions.
Lambda will not have permission to run or access resources, causing errors.
Use an IAM role with the AWSLambdaBasicExecutionRole policy attached.
Uploading the code without zipping it properly.
Lambda expects a zip file; uploading a folder or wrong format causes deployment failure.
Zip your code files into a single archive and upload that zip file.
Summary
Create a deployment package by zipping your Lambda function code.
Use the AWS CLI create-function command to create the Lambda function with the right runtime, role, handler, and code.
Invoke the function using the AWS CLI to test it and check the output.