A Handel extension which creates a CodeDeploy ECS application (Blue/Green)
npm install codedeploy-ecs-handel-extensionTo support CodeDeploy blue/green deployments, this extension will generate a
lambda which can be used by CodeDeploy to trigger runscope tests. This lambda looks
in the AWS parameter store for the following variables and.
Another lambda is also generated which can be run manually to create a new deployment to your ECS cluster.
The name of this lambda is .
extensions section of your Handel file,ecs service to your environment:``yaml
version: 1
name: codedeploy-ecs-example
extensions: # This tells Handel to import this extension
codedeploy: codedeploy-ecs-handel-extension
environments:
dev:
ecsCluster:
type: 'codedeploy::ecs' # You must use the
cluster: # Optional.
key_name: example-key # Optional. The key used to ssh into this service
instance_type: t2.small # Optional. default is 't2.micro'
services: # Required.
- name: service1 # Required.
launch_type: EC2 # Optional. Default is 'EC2'
auto_scaling: # Required.
min_tasks: 2 # Required. This extension assumes that the desired task count = min_tasks
max_tasks: 4 # Required.
scaling_policies: # Optional. Configure scaling policies
- type: up
adjustment:
value: 1
alarm:
metric_name: CPUUtilization
comparison_operator: GreaterThanThreshold
threshold: 70
- type: down
adjustment:
value: 1
alarm:
metric_name: CPUUtilization
comparison_operator: GreaterThanThreshold
threshold: 30
task_definition: # Required.
name: exampleTask # Required.
network_mode: bridge # Optional. Default is 'bridge'
container: # Required.
name: exampleContainer # Required
image_name: brogerm/handel-multi-service-ecs-example # Optional. The Docker image that should be executed as the task
max_mb: 2048 # Optional. Default: 128. The amount of memory in MB to allocate to the task
cpu_units: 1024 # Optional. Default: 100. The amount of CPU units to allocate to the task. 1 vCPU = 1024
port_mappings: # Optional.
- 8081
routing: # Optional. This will configure a load balancer listener rule to route traffic between services
base_path: '/basepath1/*'
health_check_path: '/xhealth'
environment_variables: # Optional.
REGION: us-west-2
codedeploy:
termination_wait_time: 30 # Optional. Specify how long (in minutes) to wait before terminating old instances. Default is 60
time_before_auto_stop: 30 # Optional. Specify how long (in minutes) to wait before the deployment will be stopped automatically.
# For a deployment to succeed, the user must manually choose to continue after the test endpoint is configured.
# Default is 60
runscope_tests: # Optional. Keep in mind that AWS Lambda has a 15 minute maximum timeout, meaning that your max_allow_retries multiplied
# by your retry_delay should not be more than 15 minutes and should also allow time for the tests to run.
max_allowable_retries: 3 # Required. The number of maximum times to retry the runscope tests if they fail. Default is 0
retry_delay: 60 # Required. The amount of time, in seconds, to wait between retries. Default is 0
# See https://handel.readthedocs.io/en/latest/supported-services/ecs.html for configuring load balancing, logging, and tagging
`
Reference an image as follows:
```The