Mohan Golla
5 min readJan 8, 2024

HumanGov: Proof of Concept (POC) on AWS Elastic Container Service (ECS) fronted By Application Load Balancer (ALB) and Storing Docker Images on Elastic Container Registry (ECR)

During this hands-on project, I delved into the intricate world of cloud architecture and deployment. My task revolved around the HumanGov application, which was to be modernized, containerized, and deployed onto the AWS Cloud environment. I started by creating necessary IAM roles, followed by initializing the AWS Cloud 9 environment and cleaning up outdated directories. This set the stage for our application transition, as I then containerized the HumanGov application using Docker. Next, I built and pushed our Docker images to AWS ECR for both our Flask app and the NGINX application. The meticulous step-by-step process ensured each layer was built properly with the right configurations.

Using Terraform, I provisioned an AWS S3 Bucket and a DynamoDB table. Terraform’s Infrastructure as Code capability streamlined this process, allowing me to instantiate, modify, and version infrastructure safely and efficiently. With AWS S3 and DynamoDB ready, it was then onto the Elastic Container Service (ECS). After creating an ECS cluster, I formulated a Task Definition for our ECS deployment.

This definition detailed the containers, their roles, and necessary configurations, from environment variables to port settings.

Finally, it was time for deployment. I set up a service on ECS, using Fargate as the launch type. The service seamlessly integrated our Docker containers, AWS configurations, and the necessary resources to ensure our application’s optimal performance. The results were a fully functional, scalable, and resilient cloud-based HumanGov application.

Overall, this project gave me an in-depth understanding of cloud deployment processes, from IAM roles, Docker containerization, AWS ECR, Terraform provisioning, to AWS ECS service deployment. Each step was a lesson in best practices, troubleshooting, and the immense potential of cloud technologies.

Below are few screenhots:

HumanGov Logo

Add permissions to a role

Role created

AWS Cloud 9

Create a public on AWS Elastic Container Registry(ECR) — similar to DockerHub

Commands to authenticate the humangov-app with AWS Cloud 9 environment.

Tagged humangov-app

Docker push

humangov-app image

humangov-nginx public repository

Commands to authenticate the humangov-nginx with AWS Cloud 9 environment.

humangov-nginx image tagged

Docker push

Docker push complete

humangov-nginx image

Cloud 9 user key generation

Terraform install on Cloud 9

Terraform init and Terraform show

Terraform plan for the state of California

Terraform apply for the state of California

humangov cluster

Task definition

humangov deployment in progress

humangov deployed successfully

Health checks

humangov loadbalance dns name

Two serverless FARGATE application running for High Availability

First one runs on us-east-1a

Second one runs on us-east-1f

Load balancer dns name

Application Up and running for the state of California

Employee table empty

Adding a record

The data shows in the table for the record addded

AWS S3 humangov bucket shows the pdf attachment

AWS Dyanamodb table shows the record that was added

Mohan Golla
Mohan Golla

No responses yet