Thanks to visit codestin.com
Credit goes to ecsdeployer.com

Skip to content

ECS Deployer

ECS Deployer allows you to easily deploy containerized applications to AWS ECS Fargate. It simplifies the process of creating task definitions, running pre-deployment tasks, setting up scheduled jobs, as well as service orchestration.

Applications can easily and securely be deployed with a simple GitHub Action.

Features

Resources ECS Deployer Manages

  • ECS Services
  • ECS Task Definitions
  • EventBridge Scheduler Schedules and ScheduleGroup (For CronJobs)
  • Creation only of CloudWatch Log Groups (if desired)

Resources ECS Deployer DOES NOT manage

  • ECS Cluster
  • ECR Repositories/Registry
  • SSM Secrets
  • Load Balancers / Target Groups
  • IAM Roles
  • VPC Resources

Example Config

.ecsdeployer.yml
project: simple-http

cluster: default

image:
  ecr: simple-http
  tag: "{{ .ImageTag }}"

task_defaults:
  cpu: 512
  memory: 2x

network:
  public_ip: false
  subnets:
    - subnet-111111111
    - subnet-222222222
  security_groups:
    - sg-111111111
    - sg-222222222

services:
  - name: web
    command: ["httpd", "-p", "8080"]
    desired: 3
    load_balancer:
      port: 8080
      target_group: simple-http-web

Basic Flow

flowchart TD
  A[Start] --> B{{Has PreDeploy?}};
  subgraph predeploy[Run PreDeploy Tasks]
    direction LR
    PD1 --> PD2[...]
    PD2 --> PDN
  end
  subgraph svc[Service Deployment]
    direction TB
    svc1[http] --> swait{{Wait for stability}}
    svc2[...] --> swait
    svc3[worker] --> swait
    cus{{Create/Update Services}} --> svc1
    cus --> svc2
    cus --> svc3
  end
  B -->|Yes| predeploy;
  B -->|No|C{{Cronjobs}};
  predeploy --> C;
  C --> svc;
  svc --> D{{Deregister Old Tasks}}
  D --> E[Success!]