87 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
categories:
 | 
						|
  - DevOps
 | 
						|
tags: [AWS, aws-lambda, backend]
 | 
						|
---
 | 
						|
 | 
						|
# AWS Lambda handler function
 | 
						|
 | 
						|
Every Lambda function begins the same way with a handler function. In NodeJS:
 | 
						|
 | 
						|
```js
 | 
						|
module.exports.handler = function(event, context, callback){...}
 | 
						|
```
 | 
						|
 | 
						|
The handler is the entry point for the Lambda. It is a function that Lambda can
 | 
						|
call to start the execution of your code when an event triggers your Lambda
 | 
						|
function.
 | 
						|
 | 
						|
You may put your whole code in the body of the handler, or you may call other
 | 
						|
modules and keep the handler clean and focused on bootstrapping.
 | 
						|
 | 
						|
The `module.exports` part is just the standard way of exporting a module in
 | 
						|
Node. `handler` is a property that is being exported.
 | 
						|
 | 
						|
You always have access to the parameters `event`, `context` and `callback`.
 | 
						|
 | 
						|
- `event`
 | 
						|
  - The triggering event of the Lambda function stored as an object. The
 | 
						|
    object's contents will be different depending on the trigger. It could be
 | 
						|
    any AWS service that serves a trigger (S3, DynamoDB, API Gateway etc).
 | 
						|
  - For example, if the triggering function is a request to API Gateway, the
 | 
						|
    `event` object will contain information about the HTTP request such as
 | 
						|
    headers, path, and the request body.
 | 
						|
- `context`
 | 
						|
  - contains information about the runtime environment and the current execution
 | 
						|
    of the Lambda function. The context object provides properties and methods
 | 
						|
    that you can use to interact with the AWS Lambda service and the current
 | 
						|
    invocation.
 | 
						|
- `callback`
 | 
						|
  - an optional parameter that represents a callback function provided by AWS
 | 
						|
    Lambda. The callback function allows you to signal the completion of your
 | 
						|
    Lambda function's execution and return a response or an error. The callback
 | 
						|
    function accepts two arguments: error and result. If the first argument is
 | 
						|
    not null, AWS Lambda treats it as an error, and the Lambda function
 | 
						|
    invocation fails. If the first argument is null, AWS Lambda treats the
 | 
						|
    second argument as the result and considers the invocation successful. Using
 | 
						|
    the callback function is more common in non-async handler functions. When
 | 
						|
    you use async functions, you can return a response or throw an error
 | 
						|
    directly, without using the callback function.
 | 
						|
 | 
						|
### Full example:
 | 
						|
 | 
						|
In JavaScript:
 | 
						|
 | 
						|
```js
 | 
						|
module.exports.handler = async (event, context) => {
 | 
						|
  // Your logic to handle the incoming event
 | 
						|
  // For example, you can call other AWS services, process the event data, etc.
 | 
						|
 | 
						|
  // Return a response
 | 
						|
  return {
 | 
						|
    statusCode: 200,
 | 
						|
    body: JSON.stringify({
 | 
						|
      message: "Your Lambda function has successfully executed!",
 | 
						|
    }),
 | 
						|
  };
 | 
						|
};
 | 
						|
```
 | 
						|
 | 
						|
In Python:
 | 
						|
 | 
						|
```py
 | 
						|
import json
 | 
						|
 | 
						|
def handler(event, context):
 | 
						|
    # Your logic to handle the incoming event
 | 
						|
    # For example, you can call other AWS services, process the event data, etc.
 | 
						|
 | 
						|
    # Return a response
 | 
						|
    response = {
 | 
						|
        'statusCode': 200,
 | 
						|
        'body': json.dumps({
 | 
						|
            'message': 'Your Lambda function has successfully executed!'
 | 
						|
        })
 | 
						|
    }
 | 
						|
    return response
 | 
						|
```
 |