Step-by-Step Guide to Configuring AWS CodePipeline with YAML and Terraform for Effective Rollback

To set up an AWS CodePipeline with YAML configuration and include a rollback strategy using Terraform, you will need to integrate several AWS services, such as AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, and possibly AWS Lambda for the rollback mechanisms. Below, I’ll provide an example of how you might define this infrastructure using Terraform.

AWS CodePipeline Terraform Rollback
AWS CodePipeline Terraform Rollback


  1. AWS CodeCommit: Stores your repository.
  2. AWS CodeBuild: Builds your source code from CodeCommit.
  3. AWS CodeDeploy: Deploys the built code to your instances and manages rollback if the deployment fails.
  4. AWS CodePipeline: Orchestrates the workflow (commit, build, deploy).

Terraform Configuration:

This setup assumes you have basic familiarity with Terraform. Make sure you have the AWS provider configured in your Terraform setup.

Step 1: Define the AWS Provider

provider "aws" {
  region  = "us-west-2" # or your preferred region

Step 2: Create CodeCommit Repository

resource "aws_codecommit_repository" "example_repo" {
  repository_name = "example-repo"

Step 3: Set Up CodeBuild Project

resource "aws_codebuild_project" "example_build" {
  name          = "example-build"
  service_role  = aws_iam_role.example_role.arn
  build_timeout = "5" # in minutes

  artifacts {
    type = "NO_ARTIFACTS"

  environment {
    compute_type    = "BUILD_GENERAL1_SMALL"
    image           = "aws/codebuild/standard:4.0"
    type            = "LINUX_CONTAINER"
    privileged_mode = true

  source {
    type            = "CODECOMMIT"
    location        = aws_codecommit_repository.example_repo.clone_url_http
    buildspec       = "buildspec.yml"

Step 4: CodeDeploy Setup

resource "aws_codedeploy_app" "example_app" {
  name  = "example-app"
  compute_platform = "Server" # or Lambda/ECS depending on your needs

resource "aws_codedeploy_deployment_group" "example_group" {
  app_name               =
  deployment_group_name  = "example-deployment-group"
  service_role_arn       = aws_iam_role.example_role.arn

  auto_rollback_configuration {
    enabled = true

  blue_green_deployment_config {
    deployment_ready_option {
      action_on_timeout = "CONTINUE_DEPLOYMENT"

    terminate_blue_instances_on_deployment_success {
      action               = "TERMINATE"
      termination_wait_time_in_minutes = 5

Step 5: Define CodePipeline

resource "aws_codepipeline" "example_pipeline" {
  name     = "example-pipeline"
  role_arn = aws_iam_role.example_role.arn

  artifact_store {
    type     = "S3"
    location = aws_s3_bucket.example_bucket.bucket

  stage {
    name = "Source"
    action {
      name             = "Source"
      category         = "Source"
      owner            = "AWS"
      provider         = "CodeCommit"
      version          = "1"
      output_artifacts = ["source_output"]
      configuration    = {
        RepositoryName = aws_codecommit_repository.example_repo.repository_name
        BranchName     = "main"

  stage {
    name = "Build"
    action {
      name             = "Build"
      category         = "Build"
      owner            = "AWS"
      provider         = "CodeBuild"
      input_artifacts  = ["source_output"]
      output_artifacts = ["build_output"]
      version          = "1"
      configuration    = {
        ProjectName =

  stage {
    name = "Deploy"
    action {
      name            = "Deploy"
      category        = "Deploy"
      owner           = "AWS"
      provider        = "CodeDeploy"
      input_artifacts = ["build_output"]
      version         = "1"
      configuration   = {
        ApplicationName =
        DeploymentGroupName = aws_codedeploy_deployment_group.example_group.deployment_group_name
  • S3 Bucket: Used for storing artifacts generated during the build and deploy process.
  • IAM Role and Policy: The IAM role and policy for CodePipeline must allow actions on CodeBuild, CodeDeploy, and S3.
  • CodePipeline Stages: The pipeline is divided into source, build, and deploy stages. You must have your CodeCommit repository and CodeBuild project already set up.

Rollback Strategy

AWS CodeDeploy inherently supports rollbacks in the event of a deployment failure. You configure these settings directly in the AWS CodeDeploy setup (not shown here in the Terraform script). You should set up alarms and triggers within AWS CodeDeploy to automatically revert to the last successful deployment state if a failure is detected during the deployment process.


Initialize Terraform and apply the configuration:

terraform init
terraform apply

This script is a foundational example and might need to be adjusted based on your specific application requirements, such as handling different environments or more complex deployment strategies. Be sure to test in a development environment to ensure that everything works as expected before rolling out to production

#Terraform #DevOps #CloudComputing #YAML #AWSRollback #InfrastructureAsCode #TechTips #AWSCodePipeline

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *