Update App

Let’s deploy

ufo ship

You will be prompted to confirm before deployment.

$ ufo ship
Will deploy stack demo-web-dev (y/N)

Confirm to ship:

Will deploy stack demo-web-dev (y/N) y
Building Docker Image
=> docker build -t 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:ufo-2022-03-02T21-40-14-12dc6e0 -f Dockerfile .
Docker Image built: 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:ufo-2022-03-02T21-40-14-12dc6e0
Pushing Docker Image
=> docker push 111111111111.dkr.ecr.us-west-2.amazonaws.com/demo:ufo-2022-03-02T21-40-14-12dc6e0
Task Definition built: .ufo/output/task_definition.json
Parameters built:      .ufo/output/params.json
Template built:        .ufo/output/template.yml
Updating stack demo-web-dev
Waiting for stack to complete
09:40:20PM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack demo-web-dev User Initiated
09:40:35PM UPDATE_IN_PROGRESS AWS::ECS::Service EcsService
...
09:42:34PM UPDATE_COMPLETE AWS::CloudFormation::Stack demo-web-dev
Stack success status: UPDATE_COMPLETE
Time took: 2m 17s
Software shipped!
$

Check Changes

Let’s first check the autoscaling changes with:

ufo ps

You’ll see Max: 3 in the output like this:

$ ufo ps
Stack: demo-web-dev
Service: demo-web-dev-EcsService-A8kB93gxbG9u
Tasks: Running: 1 Desired: 1 Min: 1 Max: 3
Application ELB: demo-we-Elb-3249Z2HSFMDA-1395285973.us-west-2.elb.amazonaws.com
+----------------------------------+------+-----------------+---------------+---------+
|             Task Id              | Name |     Release     |    Started    | Status  |
+----------------------------------+------+-----------------+---------------+---------+
| 67ad1eae238341cfbf32803648465d54 | web  | demo-web-dev:18 | 2 minutes ago | RUNNING |
+----------------------------------+------+-----------------+---------------+---------+
$

Let’s also confirm that the task is using higher CPU and Memory limits with:

aws ecs describe-tasks --cluster CLUSTER --tasks TASK

We’ll filter the output with jq. Here’s what it should look like:

$ aws ecs describe-tasks --cluster dev --tasks 67ad1eae238341cfbf32803648465d54 \
    | jq '.tasks[].containers[] | {cpu: .cpu, memory: .memory}'
{
  "cpu": "512",
  "memory": "512"
}

We can see that both cpu and memory are set to 512.

Next, we’ll delete the app.