> For the complete documentation index, see [llms.txt](https://ysfang82.gitbook.io/development-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ysfang82.gitbook.io/development-notes/aws-notes/service/deployment/code-deploy.md).

# Code Deploy

**Introduction**

* A deployment service that automates **application deployments** to&#x20;
  * EC2 instances
  * on-premises instances
  * Lambda
  * ECS
* **Does not launch AWS resources** automatically like CloudFormation, Opsworks, and Elastic Beanstalk.

**Feature**

* Deploy to EC2
  * Define how to deploy the application using appspec.yml + strategy
  * Will do in-place update (take off partial v1, provision v2, replace all in the end) to your fleet of EC2 instances
  * Can use hooks to verify the deployment after each deployment phase
* CodeDeploy to ASG
  * In-place updates
    * Updates current existing EC2 instances
    * Instances newly created by an ASG will also get automated deployments
  * Blue / Green Deployment
    * A new auto-scaling group is created (settings are copied)
    * Choose how long to keep the old instances
    * Must be using an ELB
* CodeDeploy to Lambda
  * Supports Blue / Green Deployments
    * Canary
    * Linear
    * All-at-once
  * Traffic Shifting with Lambda Alias
  * Pre / Post Traffic Hooks
    * Pre Traffic Hook: validate the v2
    * Post Traffic Hook: rollback to v1 / clean up
  * Easy & automated rollback using CloudWatch Alarms
  * SAM framework natively uses CodeDeploy
* CodeDeploy to ECS
  * Supports Blue / Green Deployments for ECS / ECS Fargate
    * Canary
    * Linear
    * All-at-once
  * Setup is done within the ECS Service definition
  * A new task set is created, and traffic is re-routed to the new task test.
  * Then if everything is stable for X minutes, the old task set is terminated.
