Step-by-Step Guide: Deploying a Dash App on AWS Lambda Using Terraform

Listen to this Post

Featured Image
Building modern frontends for Python applications can be streamlined using Dash, a framework that generates JavaScript from Python code. Deploying a Dash app on AWS Lambda with Terraform (IaC) ensures scalability and automation.

You Should Know:

1. Prerequisites

  • AWS Account with CLI configured (aws configure)
  • Terraform installed (terraform --version)
  • Docker for containerization (docker --version)
  • Python & Dash (pip install dash)

2. Sample Dash App (`app.py`)

import dash 
import dash_html_components as html

app = dash.Dash(<strong>name</strong>)

app.layout = html.Div([ 
html.H1("AWS Lambda + Dash Deployment"), 
html.P("This app runs on Lambda via Terraform!") 
])

def lambda_handler(event, context): 
from werkzeug.middleware.dispatcher import DispatcherMiddleware 
from werkzeug.serving import run_simple 
import flask

flask_app = app.server 
application = DispatcherMiddleware(flask_app) 
run_simple("0.0.0.0", 5000, application)

return {"statusCode": 200, "body": "Dash App Running"} 

3. Terraform Configuration (`main.tf`)

provider "aws" { 
region = "us-east-1" 
}

resource "aws_lambda_function" "dash_lambda" { 
function_name = "dash-app-lambda" 
role = aws_iam_role.lambda_exec.arn 
image_uri = aws_ecr_repository.dash_app.repository_url 
package_type = "Image" 
timeout = 30 
}

resource "aws_iam_role" "lambda_exec" { 
name = "lambda_exec_role" 
assume_role_policy = jsonencode({ 
Version = "2012-10-17", 
Statement = [{ 
Action = "sts:AssumeRole", 
Effect = "Allow", 
Principal = { Service = "lambda.amazonaws.com" } 
}] 
}) 
}

resource "aws_ecr_repository" "dash_app" { 
name = "dash-app-repo" 
} 

4. Deploying with Terraform

 Initialize Terraform 
terraform init

Build & push Docker image 
docker build -t dash-app . 
aws ecr get-login-password | docker login --username AWS --password-stdin [bash].dkr.ecr.us-east-1.amazonaws.com 
docker tag dash-app:latest [bash].dkr.ecr.us-east-1.amazonaws.com/dash-app-repo:latest 
docker push [bash].dkr.ecr.us-east-1.amazonaws.com/dash-app-repo:latest

Apply Terraform 
terraform apply -auto-approve 

5. Verify Deployment

aws lambda invoke --function-name dash-app-lambda output.txt 
cat output.txt 

What Undercode Say

Deploying Dash on AWS Lambda via Terraform optimizes serverless frontend development. Key takeaways:
– Use `DispatcherMiddleware` to wrap Dash in Lambda.
– Terraform automates AWS resource provisioning (ECR, IAM, Lambda).
– Docker ensures consistency between local & cloud environments.
– Monitor logs with aws logs tail /aws/lambda/dash-app-lambda.

For scaling, consider API Gateway (aws apigateway create-rest-api) or ECS Fargate (aws ecs create-cluster).

Expected Output:

A fully deployed Dash app running on AWS Lambda, accessible via API Gateway or direct Lambda invocation.

Reference: Medium

References:

Reported By: Darryl Ruggles – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 Telegram