2024-01-05
10 min read

Deploying Applications to AWS ECS using ECR: A Comprehensive Guide

Learn how to deploy containerized applications to Amazon ECS using ECR, including step-by-step instructions and best practices for container deployment on AWS.

AWS
ECS
ECR
Docker
DevOps
Cloud

Amazon Elastic Container Service (ECS) and Elastic Container Registry (ECR) provide a robust solution for containerized application deployment. In this guide, we'll walk through the process of deploying a containerized application to ECS using ECR.

Prerequisites

  • AWS Account with appropriate permissions
  • AWS CLI installed and configured
  • Docker installed locally
  • A containerized application ready for deployment

Step 1: Setting up ECR Repository

First, create an ECR repository to store your Docker images. You can do this via AWS Console or using AWS CLI:

bash
aws ecr create-repository --repository-name my-app --region us-east-1

Step 2: Authenticate Docker with ECR

Before pushing images, authenticate your Docker client with ECR:

bash
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin {account-id}.dkr.ecr.us-east-1.amazonaws.com

Step 3: Build and Push Docker Image

bash
docker build -t my-app .
docker tag my-app:latest {account-id}.dkr.ecr.us-east-1.amazonaws.com/my-app:latest
docker push {account-id}.dkr.ecr.us-east-1.amazonaws.com/my-app:latest

Step 4: Create ECS Cluster

Create an ECS cluster to host your containers:

bash
aws ecs create-cluster --cluster-name my-cluster

Step 5: Define Task Definition

Create a task definition that specifies how your container should run:

json
{
  "family": "my-app",
  "containerDefinitions": [{
    "name": "my-app",
    "image": "{account-id}.dkr.ecr.us-east-1.amazonaws.com/my-app:latest",
    "memory": 512,
    "cpu": 256,
    "essential": true,
    "portMappings": [{
      "containerPort": 80,
      "hostPort": 80,
      "protocol": "tcp"
    }]
  }]
}

Step 6: Create and Run Service

Finally, create an ECS service to maintain and scale your application:

bash
aws ecs create-service --cluster my-cluster --service-name my-service --task-definition my-app:1 --desired-count 2

Best Practices

  • Use task definition versioning for rollbacks
  • Implement proper logging and monitoring
  • Set up auto-scaling policies
  • Use secrets management for sensitive data
  • Implement proper security groups and IAM roles

Conclusion

ECS and ECR provide a powerful platform for container deployment and management. By following these steps and best practices, you can create a robust deployment pipeline for your containerized applications on AWS.