
Master the fundamentals of Python Django while integrating AWS and Docker, covering IAM, RDS, SES, Elastic Beanstalk, ECR, ECS, and 100+ video lectures with CodePipeline and CodeDeploy workflows.
Outline prerequisites for the course, including basic HTML and CSS, Django fundamentals for later dockerization, and an understanding of AWS concepts such as EC2, load balancers, and auto scaling groups.
Explore course support for Python Django for AWS development via the Q&A forum, while practicing solo problem solving and knowing when to ask for assistance.
Download the final project code from the attached zip file in this lecture. Check the resources folder for additional files available in other lectures.
Install python 3.11.1 on Windows, verify with python and pip, then install and configure Visual Studio Code with essential extensions like plastic, prettier, auto rename tag, and Django support.
Install Python on macOS and verify Python and pip, then install Visual Studio Code, customize themes, and add extensions like Prettier, auto rename tag, and Django support.
Set up a Django app by creating a new app named links, configure it in settings.py under installed apps, and run the server to verify everything works.
Define views for index, register, login, dashboard, and profile management in django, rendering their templates. Connect them via urls and test templates to verify home, register, login, and dashboard pages.
Configure Django static files for Django four and up by creating a static folder (css, js, images), updating settings, and loading static in templates to link styles.css and app.js.
Style the web app with a bootswatch bootstrap theme, then place css below it in index.html and add titles for dashboard, login, profile management, and register to improve seo.
Style your Django web app with a responsive Bootstrap navigation bar featuring register and login buttons, and update index.html with jQuery and Bootstrap JS for hamburger navigation.
Configure Django to allow file uploads by setting media url and media root, wiring static and media routes in urls.py, and assigning a default profile image in models.py.
Create a Django user registration form using a model form in forms.py, with username, email, password1, and password2, wired in register view to post, validate, save, and redirect to login.
Install and pin Django crispy forms to version 1.14.0 to ensure configuration compatibility, avoiding the latest 2.0 release in your virtual environment.
Register new users and automatically create a linked profile with a default image during form submission. Verify via admin and ensure register and login links navigate correctly.
Learn to build a Django user login flow: create a login form from authentication form, wire up login/logout views and URLs, authenticate credentials, and protect account views.
Update username and email with a Django model form. Pre-populate fields from the current user, exclude passwords, and submit via post to a profile management page.
learn to upload and render a user profile picture in Django by building a profile management workflow with a model form, views, and template rendering on the dashboard.
Enhance user navigation and styling by adding a top navigation bar to login and register pages, linking to home, and refining buttons and layout for a cleaner, more usable interface.
Employ template inheritance to build a reusable account nav bar in a Django app, then integrate it into dashboard, profile management, and delete account pages.
Sign up for a free AWS account, create a root user and IAM users, and verify your email to start using AWS services; see the resources PDF for an overview.
Learn to create an iam user and a developers group, attach administrator access and change password policies, and add the user to the group for inherited permissions.
Sign in as an IAM user using a unique account URL and alias, save the sign-in URL and credentials, and also access the default manual sign-in method.
Add multi-factor authentication to your IAM user and root account using an authenticator app, scan the QR code, and enter two consecutive codes to secure AWS access.
Install the AWS CLI on macOS and verify the installation. Configure access keys and set the default region to us-east-2 with JSON output.
Learn how Amazon S3 stores files in buckets as objects, ensure unique bucket names, and use S3 for backup, disaster recovery, and hosting a static website.
Create an Amazon S3 bucket to store images and static files, set a unique name and region, and apply a bucket policy for public read.
Integrate Amazon S3 with a Django app by installing boto3 and Django storages, configuring settings for media and static files, and deploying to a production S3 bucket.
Explore Amazon RDS, a managed relational database service on AWS, and learn to create relational databases in the cloud using engines such as PostgreSQL, MySQL, and Oracle.
Create an AWS RDS Postgres instance, configure engine, credentials, and security groups for port 5432, then run migrations and set up a Django admin user to test the database connection.
Explore how AWS Route 53 handles DNS with A and CNAME records, aliasing to AWS resources, and routing policies—simple, weighted, failover, and latency—for reliable domain name management.
Explore AWS certificate manager (ACM) for creating and deploying free public SSL/TLS certificates to enable HTTPS. See how the HTTPS lock in the address bar secures websites, including online payments.
Provision and assign a public SSL certificate with AWS certificate manager using DNS validation, then configure Route 53 DNS records to bind the certificate to your domain and www.
Learn Amazon SES, a cloud email service for bulk transactional and marketing messages. Start in sandbox with sender identities and email verification, then apply for production access.
Request production access for Amazon SES to move from sandbox to production, enabling emails to any user without per-sender identities and clarifying use case as marketing or transactional.
Install gunicorn inside a Django project's virtual environment, not globally, to bridge the web server and your app for deployment to AWS Elastic Beanstalk live servers.
Configure and secure your Django project by using django-environ to manage environment variables, including secret keys and AWS credentials, via a .env file and settings.py.
Prepare your Django app for Elastic Beanstalk deployment by generating a requirements.txt with pip freeze and configuring settings.py with debug off, allowed hosts, and CSRF trusted origins.
Set up a Django project in a virtual environment, install Django and Gunicorn, configure settings and EB extensions, and deploy a pre-deployment test to AWS Elastic Beanstalk, then clean up.
Configure a domain with an ssl certificate for a Django app on AWS Elastic Beanstalk, using ACM and Route 53, with load balancer https termination and http to https redirects.
Deploy and test a Django app on AWS Elastic Beanstalk, configure a custom domain with SSL, integrate a load balancer, and verify csrf trusted origins across domains.
Learn to debug errors with Elastic Beanstalk logs by navigating to the logs tab, choosing the last 100 lines, downloading the log file, and identifying root causes in your environment.
Learn how sticky sessions use a session cookie to tie a user to a specific server behind a load balancer, preventing lost sessions across multiple EC2 instances.
Enable session stickiness for the target group by editing attributes, set the load balancer generated cookie duration to one day, save changes, and verify the setup.
See how Docker packages apps into containers that run on any machine, with Dockerfiles building images, pushing to Docker Hub or EC2 ECR, and running Python or Django apps.
Open and examine Docker Desktop to understand its interface, start the Docker engine, and explore containers, images, volumes, and learning resources like Docker Scout and the learning center.
Build a Docker image from a Dockerfile with Docker build -t eden salt, observe copying requirements, installing packages, and running server, then verify image in Docker desktop.
Run a docker container locally to verify the application starts and to validate port mapping (8888:8000) with the Eden Salt image.
Learn to clean up Docker resources by stopping and deleting containers and images, then prune system resources to remove unused networks and dangling cache, and understand build cache.
Create a production Docker image with a Linux/amd64 platform flag to ensure cross-system compatibility on macOS and Windows, preventing Amazon ECS issues.
Explore how to manage docker containers on aws using ecr to store images, ecs to run containers, and fargate for serverless deployment, plus eks for kubernetes deployments.
Explore serverless computing and learn how you run apps in the background without managing servers, with examples like AWS Lambda, DynamoDB, S3, and AWS Fargate.
Assign and attach permission policies in IAM to enable full access for Amazon ECR and Amazon ECS, ensuring seamless Docker container management.
Push your Docker image to Amazon ECR and troubleshoot common network issues that cause retrying or image corruption, including unstable internet, VPN, antivirus, and ISP restrictions.
Create a new private ECR repository named my first repository and use code build to automatically push a Docker image, enabling CI/CD with code commit, code deploy, and code pipeline.
Define ci cd as continuous integration and delivery. Preview AWS services that manage the ci cd process for frequent, reliable code updates.
Discover how AWS CodeBuild compiles source code, runs tests, and produces packages. See how these packages flow to CodeDeploy for deployment.
Master zero downtime deployment with AWS CodeDeploy, enabling seamless redeployments through blue/green strategies that keep your app online while updates roll out.
Discover how AWS CodePipeline orchestrates the ci/cd process from CodeCommit to deployment, coordinating CodeBuild for build and test, and deploying with CodeDeploy.
Define an AWS ECS task definition using the Fargate launch type, configure a demo app container with an ECR image and port 8000, and create the task definition revision.
Create a buildspec.yml to drive CodeBuild for building and pushing a Docker image to Amazon ECR. Understand the pre-build, build, and post-build phases, artifacts, and image definitions json for CodePipeline.
Create a taskdef.json in the project root. Paste the copied AWS task definition JSON into it so CodeDeploy tracks the Docker image and key settings alongside app spec and buildspec.yml.
Perform pre-code cleanup by removing unnecessary files such as docker-compose.yml and the EB extensions folder, and keep only the docker file for code build.
Double check your requirements.txt to include all used packages and prevent deployment failures, build the docker image, run the container, and push to code commit after verifying the course requirements.txt.
Push your source code to AWS CodeCommit by moving files to the Eden Salt repo, then use git add, commit, and push to the master branch, validating the repository update.
Build a docker image of your Django project with AWS CodeBuild and CodeCommit, enabling privileged mode, using a root build spec, and monitor logs in CloudWatch.
Learn how to add optional CodePipeline permissions to troubleshoot docker image builds by attaching Amazon EC2 container policy and Amazon EC2 container registry full access to the service role.
Examine task definition analysis in depth by reviewing ecs task definitions, container details, and the image uri, including how the latest tag from a repository links everything.
Create an ECS Fargate cluster in the AWS console, naming it and enabling AWS Fargate serverless. Learn to handle cluster bugs via CloudFormation and retry with a demo app.
Configure an application load balancer with two IP-based target groups for blue-green deployment, directing http 80 and https 443 traffic to a django app on port 8000.
Create a CodeDeploy ECS role in IAM to enable blue-green deployment. Attach permissions to read S3 objects, invoke Lambda functions, publish SNS topics, and update ECS services.
Configure dns records in Route53 to point eden.com and www.eden.com to your application load balancer, then set up a listener to redirect http traffic to https for secure access.
Create a security group for our ECS container in the default VPC and add an inbound TCP rule from the load balancer security group to reach port 8000.
This course requires you to download Docker Desktop from the Docker Desktop website. If you are a Udemy Business user, please check with your employer before downloading software.
Welcome! I'm here to teach you how you to master the fundamentals of AWS development with Python Django.
-- Please read carefully --
There are many sections in this course, but some of the key ones include the following:
Create a basic CRUD application in Django
- The first thing that we will do is create a simple CRUD application in Django - [Optional]
Docker with Django
- We will learn how to build docker images and transform them to run as docker containers with Docker Desktop.
Django + AWS Integration: Phase I and Setup and configuration
- The first phase will be very beginner friendly as we start to set up our AWS ecosystem.
AWS services used:
- AWS Identity and Access Management (IAM)
- AWS Budgets
- Amazon Simple Storage Service (Amazon S3)
- Amazon Relational Database Service (Amazon RDS)
- Amazon Route 53
- AWS Certificate Manager (ACM)
Django + AWS Integration: Phase II
- The second phase will be very beginner friendly and prove to be beneficial to all levels as we start to set up our AWS ecosystem
AWS services used:
- Amazon Simple Email Service (Amazon SES)
- AWS Elastic Beanstalk
Django + AWS Integration: Phase III + IV
The third and fourth phase explores more intermediate concepts
Here we will explore the CI/CD process. We will only focus on the basics of the CI/CD process and not delve into more advanced topics.
Simply put we will learn how to store our source code with AWS CodeCommit. How to create our docker image with AWS CodeBuild and store it within a docker image repository (Elastic Container Registry).
After that we will run and manage a simple container via ECS - Fargate. To ensure that our latest application is always live without any downtime we will ensure that we make use of AWS CodeDeploy.
Now this process involves a lot of services - to ensure that we can manage this we will make use of AWS CodePipeline to orchestrate our CI/CD pipeline
AWS services used:
- Amazon Elastic Container Registry (Amazon ECR)
- Amazon Elastic Container Service (Amazon ECS) + With the Amazon ECS Fargate Launch type
- AWS CodeCommit
- AWS CodeBuild
- AWS CodeDeploy
- AWS CodePipeline
Final CI/CD demonstration
- A final demonstration on the basic CI/CD process of AWS
- How to briefly monitor your application usage with Amazon CloudWatch
I want to help YOU to master the fundamentals of AWS development with Python Django.
The Python Django for AWS Development - Mastery course - Part 1 - course has been structured in a simple and logical order. Everything that has been designed from the styling to the graphics and topics covered is crafted with the absolute duty of care towards the student.
It covers all the concepts that you need to be aware of, in order to deploy your application.
The course is structured in a logical and cohesive way - not just random lectures plastered everywhere.
It starts off very simple and then builds on gradually throughout the course.
This course is jam-packed with code snippets/references and with the full project source code (as a zip file).
The Python Django for AWS Development - Mastery course - Part 1 is a highly practical course and allows you to apply your knowledge:
There is a wealth of hands-on lectures throughout this course.
--
Your instructor:
My name is Arno Pretorius. I'm a qualified IT teacher who has taught programming both in-person and online. My main passions are teaching and technology, so I thought why not just combine the best of both worlds to create something truly amazing and valuable. Over the years, I have created and deployed many real-world Django-based applications, including a job portal for university graduates and an exclusive social network.
I'm a Software developer, an AWS Solutions Architect and Developer associate. I have a keen interest in cloud computing, web development and everything that relates to programming and technology.
So, let's go and become fluent in AWS + Django deployment
Trust me you are in good hands!
--
This course also comes with:
- 11 + hours of on-demand video
- Full lifetime access
- A Udemy certificate of completion
- Access on mobile and TV