Debug School

rakesh kumar
rakesh kumar

Posted on

How to integrate your django project for continously delivery product record Using aws lambda function

To integrate your Django project for continuous delivery of product records with an AWS Lambda function, you can follow these general steps. This example assumes you are using AWS Lambda, Amazon API Gateway, and AWS SDK for Python (Boto3). Please adapt the steps based on your specific requirements.

Step 1: Set Up Django Project
Make sure your Django project is set up and running. Ensure that you have a Django app that manages product records.

Step 2: Create AWS Lambda Function
Go to the AWS Management Console.
Navigate to AWS Lambda and create a new Lambda function.
Write a Lambda function that interacts with your Django project. For example:

import json
import requests

def lambda_handler(event, context):
    # Assuming event contains product data
    product_data = json.loads(event['body'])

    # Make a request to your Django API endpoint
    django_api_url = "https://your-django-api-url/products/"
  //django_api_url = "http://localhost:8000/products/"
    response =, json=product_data)

    return {
        'statusCode': response.status_code,
        'body': response.text
Enter fullscreen mode Exit fullscreen mode

Step 3: Set Up API Gateway

  1. In the AWS Management Console, navigate to API Gateway.
  2. Create a new API or use an existing one.
  3. Create a resource and method (e.g., POST) to handle incoming requests.
  4. Create a new Integration with Lambda Function, pointing to the Lambda function you created.
  5. Deploy your API to make it accessible via a public URL . Note the URL provided by the API Gateway. Step 4: Configure Django Project Install boto3 library in your Django project:
pip install boto3
Enter fullscreen mode Exit fullscreen mode

Add AWS Lambda function invocation logic in your Django app where you want to trigger the Lambda function. You can use the boto3 library to invoke the Lambda function. For example:

Django view that handles a form submission

def create_product(request):
    # Assuming form data is submitted via POST request
    if request.method == 'POST':
        # Extract product information from the form
        product_name = request.POST.get('name')
        product_price = float(request.POST.get('price'))
        # Other product details...

        # Create a dictionary with the product information
        product_data = {
            'name': product_name,
            'price': product_price,
            # Add other details as needed

        # Invoke the Lambda function with the product_data
        result = invoke_lambda_function(product_data)

        # Handle the result as needed
        return HttpResponse("Product created successfully!")
Enter fullscreen mode Exit fullscreen mode
import boto3
import json

def invoke_lambda_function(product_data):
    lambda_client = boto3.client('lambda', region_name='your-aws-region')

    payload = {
        'body': json.dumps(product_data)

    response = lambda_client.invoke(

    result = json.loads(response['Payload'].read().decode('utf-8'))

    return result
Enter fullscreen mode Exit fullscreen mode

Replace 'your-aws-region' with your AWS region and 'your-lambda-function-name' with the name of your Lambda function.

Integrate the invoke_lambda_function logic in your Django views or wherever you need it.

Step 5: Testing
Trigger the Lambda function by making requests to the API Gateway endpoint.

curl -X POST -H "Content-Type: application/json" -d '{"name": "Product1", "price": 50}' https://your-api-gateway-url/your-resource
Enter fullscreen mode Exit fullscreen mode

Check your Django project logs and verify that the product records are being processed.

Step 6: Automation
Integrate these steps into your continuous delivery pipeline, such as AWS CodePipeline, to automate the deployment and testing of your Django project updates. This ensures that changes are automatically deployed to your production environment with the integration of AWS Lambda functions.

Top comments (0)