Codefresh Steps: Reusable Code for Common Operations
This page provides code you can use to perform common operations in the Codefresh CI/CD platform.
79

ecs-bluegreen-deploy ecs-bluegreen-deploy

Updates an AWS ECS Service with a new image, and then deploys it with AWS CodeDeploy. Works with all deployment configurations, including AllAtOnce, Linear, and Canary. Authenticate with either an IAM role from your EKS cluster, or with a simple Access Key ID+Token.

arguments

  • AWS_ACCESS_KEY_ID - Amazon access key ID
  • AWS_ASSUME_ROLE - ARN of an IAM role from your EKS cluster to assume. The role must be associated with the EKS cluster where your Codefresh Runner is installed, either via the Runner's EKS nodegroup (see https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html), or via the Runner's Kubernetes service account (see https://codefresh.io/docs/docs/administration/codefresh-runner/#injecting-aws-arn-roles-into-the-cluster).
  • AWS_DEFAULT_REGION - AWS region
  • AWS_SECRET_ACCESS_KEY - Amazon secret access key
  • CLUSTER_NAME - ECS cluster name
  • CODEDEPLOY_APPLICATION - Optional. Default value - AppECS-[CLUSTER_NAME]-[SERVICE_NAME]
  • CODEDEPLOY_DEPLOYMENT_GROUP - Optional. Default value - DgpECS-[CLUSTER_NAME]-[SERVICE_NAME]
  • IMAGE - Image name and tag to deploy
  • MAX_WAIT_TIME - Optional. Time in minutes to wait for deployment to succeed. Default value - 60 minutes
  • SERVICE_NAME - ECS service name
    deploy_to_ecs:
  type: ecs-bluegreen-deploy
  arguments:
    AWS_DEFAULT_REGION: '${{AWS_DEFAULT_REGION}}'
    AWS_ACCESS_KEY_ID: '${{AWS_ACCESS_KEY_ID}}'
    AWS_SECRET_ACCESS_KEY: '${{AWS_SECRET_ACCESS_KEY}}'
    CLUSTER_NAME: MY_ECS_CLUSTER
    SERVICE_NAME: MY_ECS_SERVICE
    IMAGE: 'IMAGE:TAG'
    CODEDEPLOY_APPLICATION: 'AppECS-${CLUSTER_NAME}-${SERVICE_NAME}'
    CODEDEPLOY_DEPLOYMENT_GROUP: 'DgpECS-${CLUSTER_NAME}-${SERVICE_NAME}'
    MAX_WAIT_TIME: 60

  
    deploy_to_ecs_with_role:
  type: ecs-bluegreen-deploy
  arguments:
    AWS_DEFAULT_REGION: '${{AWS_DEFAULT_REGION}}'
    AWS_ASSUME_ROLE: '${{AWS_ACCESS_ROLE_ARN}}'
    CLUSTER_NAME: MY_ECS_CLUSTER
    SERVICE_NAME: MY_ECS_SERVICE
    IMAGE: 'IMAGE:TAG'
    CODEDEPLOY_APPLICATION: 'AppECS-${CLUSTER_NAME}-${SERVICE_NAME}'
    CODEDEPLOY_DEPLOYMENT_GROUP: 'DgpECS-${CLUSTER_NAME}-${SERVICE_NAME}'
    MAX_WAIT_TIME: 60

  
github.com
Pavel Nosovets
Jul 4, 2021