AWS CodeDeploy
User Guide (API Version 2014-10-06)

AWS CodeDeploy Primary Components

Before you start working with the service, you should familiarize yourself with the major components of the AWS CodeDeploy deployment process that are referred to in this user guide.

Application: A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure the correct combination of revision, deployment configuration, and deployment group are referenced during a deployment.

Deployment configuration: A set of deployment rules and deployment success and failure conditions used by AWS CodeDeploy during a deployment.

Deployment group: A set of individual instances. A deployment group contains individually tagged instances, Amazon EC2 instances in Auto Scaling groups, or both. For information about Amazon EC2 instance tags, see Working with Tags Using the Console. For information about on-premises instances, see Working with On-Premises Instances. For information about Auto Scaling, see Integrating AWS CodeDeploy with Auto Scaling.

Deployment type: The method used to make the latest application revision available on instances in a deployment group.

  • In-place deployment: The application on each instance in the deployment group is stopped, the latest application revision is installed, and the new version of the application is started and validated. You can choose to use a load balancer so each instance is deregistered during its deployment and then restored to service after the deployment is complete.

    For more information about in-place deployments, see Overview of an In-Place Deployment.

  • Blue/green deployment: The instances in a deployment group (the original environment) are replaced by a different set of instances (the replacement environment) using these steps:

    • Instances are provisioned for the replacement environment.

    • The latest application revision is installed on the replacement instances.

    • An optional wait time occurs for activities such as application testing and system verification.

    • Instances in the replacement environment are registered with an Elastic Load Balancing load balancer, causing traffic to be rerouted to them. Instances in the original environment are deregistered and can be terminated or kept running for other uses.

    For more information about blue/green deployments, see Overview of a Blue/Green Deployment.

IAM instance profile: An IAM role that you attach to your Amazon EC2 instances. This profile includes the permissions required to access the Amazon S3 buckets or GitHub repositories where the applications that will be deployed by AWS CodeDeploy are stored. For more information, see Step 4: Create an IAM Instance Profile for Your Amazon EC2 Instances.

Revision: An archive file containing source content—source code, web pages, executable files, and deployment scripts—along with an application specification file (AppSpec file). Revisions are stored in Amazon S3 buckets or GitHub repositories. For Amazon S3, a revision is uniquely identified by its Amazon S3 object key and its ETag, version, or both. For GitHub, a revision is uniquely identified by its commit ID.

Service role: An IAM role that grants permissions to an AWS service so it can access AWS resources. The policies you attach to the service role determine which AWS resources the service can access and the actions it can perform with those resources. For AWS CodeDeploy, a service role is used for the following:

  • To read either the tags applied to the instances or the Auto Scaling group names associated with the instances. This enables AWS CodeDeploy to identify instances to which it can deploy applications.

  • To perform operations on instances, Auto Scaling groups, and Elastic Load Balancing load balancers.

  • To publish information to Amazon SNS topics so that notifications can be sent when specified deployment or instance events occur.

  • To retrieve information about CloudWatch alarms in order to set up alarm monitoring for deployments.

For more information, see Step 3: Create a Service Role for AWS CodeDeploy.

Target revision: The most recent version of the application revision that you have uploaded to your repository and want to deploy to the instances in a deployment group. In other words, the application revision currently targeted for deployment is the target revision. This is also the revision that will be pulled for automatic deployments.

For information about other major components in the AWS CodeDeploy workflow, see the following topics: