From 8e8b930eadf5207a1b824cf2acd2327a838cce14 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Sun, 20 Dec 2020 16:24:58 +0000 Subject: [PATCH 1/6] feat(ecs): deployment circuit breaker support --- packages/@aws-cdk/aws-ecs/README.md | 29 +++++++++++ .../@aws-cdk/aws-ecs/lib/base/base-service.ts | 23 ++++++++ .../aws-ecs/test/ec2/test.ec2-service.ts | 16 ++++++ .../test/fargate/test.fargate-service.ts | 52 +++++++++++++++++++ 4 files changed, 120 insertions(+) diff --git a/packages/@aws-cdk/aws-ecs/README.md b/packages/@aws-cdk/aws-ecs/README.md index a5f2b09e8e92b..0f056584833e2 100644 --- a/packages/@aws-cdk/aws-ecs/README.md +++ b/packages/@aws-cdk/aws-ecs/README.md @@ -335,6 +335,35 @@ const service = new ecs.FargateService(this, 'Service', { `Services` by default will create a security group if not provided. If you'd like to specify which security groups to use you can override the `securityGroups` property. +### Deployment circuit breaker + +By default, Amazon ECS [deployment circuit breaker](https://aws.amazon.com/tw/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) +is enabled and will rollback on deployment failure. With this feature, Amazon ECS will automatically roll back unhealthy +service deployments without the need for manual intervention. As this feature with AWS Fargate requires +platform `1.4.0` or above. Make sure to specify the `platformVersion` to `1.4` as the current default version points to `1.3`. + + +```ts +const service = new ecs.FargateService(stack, 'Service', { + cluster, + taskDefinition, + platformVersion: ecs.FargatePlatformVersion.VERSION1_4, +}); +``` + +To opt-out this feature, explicitly disable `deploymentCircuitBreaker` and `deploymentRollback`. + + +```ts +const service = new ecs.FargateService(stack, 'Service', { + cluster, + taskDefinition, + deploymentCircuitBreaker: false, + deploymentRollback: false, +}); +``` + + ### Include an application/network load balancer `Services` are load balancing targets and can be added to a target group, which will be attached to an application/network load balancers: diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index 535fb240217ec..ed493ea724be4 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -161,6 +161,19 @@ export interface BaseServiceOptions { * @default - Rolling update (ECS) */ readonly deploymentController?: DeploymentController; + + /** + * Whether to enable the deplloyment circuit breaker + * @default true + */ + readonly deploymentCircuitBreaker?: boolean; + + /** + * Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, + * when a service deployment fails, the service is rolled back to the last deployment that completed successfully. + * @default true + */ + readonly deploymentRollback?: boolean; } /** @@ -356,6 +369,16 @@ export abstract class BaseService extends Resource ...additionalProps, }); + const deploymentConfiguration = { + DeploymentCircuitBreaker: { + Enable: props.deploymentCircuitBreaker ?? true, + Rollback: props.deploymentRollback ?? true, + }, + }; + + // TODO: fix this when this property is available in CfnService + this.resource.addPropertyOverride('DeploymentConfiguration', deploymentConfiguration); + if (props.deploymentController?.type === DeploymentControllerType.EXTERNAL) { Annotations.of(this).addWarning('taskDefinition and launchType are blanked out when using external deployment controller.'); } diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts b/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts index a5a2fcdbf63fb..0593051ae229b 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts @@ -40,6 +40,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DesiredCount: 1, LaunchType: LaunchType.EC2, @@ -181,6 +185,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 150, MinimumHealthyPercent: 55, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DeploymentController: { Type: ecs.DeploymentControllerType.CODE_DEPLOY, @@ -451,6 +459,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DesiredCount: 1, SchedulingStrategy: 'REPLICA', @@ -606,6 +618,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 100, MinimumHealthyPercent: 0, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, })); diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts index 7b8dc6975bae1..a5d8ab6fc858b 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts @@ -39,6 +39,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DesiredCount: 1, LaunchType: LaunchType.FARGATE, @@ -235,6 +239,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 150, MinimumHealthyPercent: 55, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DeploymentController: { Type: ecs.DeploymentControllerType.CODE_DEPLOY, @@ -355,6 +363,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DeploymentController: { Type: 'EXTERNAL', @@ -455,6 +467,10 @@ export = { expect(stack).to(haveResourceLike('AWS::ECS::Service', { DeploymentConfiguration: { MinimumHealthyPercent: 0, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, })); @@ -537,6 +553,10 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, }, DesiredCount: 1, LaunchType: LaunchType.FARGATE, @@ -1786,6 +1806,38 @@ export = { test.done(); }, + 'with circuit breaker'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const cluster = new ecs.Cluster(stack, 'EcsCluster'); + const taskDefinition = new ecs.FargateTaskDefinition(stack, 'FargateTaskDef'); + + taskDefinition.addContainer('Container', { + image: ecs.ContainerImage.fromRegistry('hello'), + }); + + // WHEN + new ecs.FargateService(stack, 'EcsService', { + cluster, + taskDefinition, + platformVersion: ecs.FargatePlatformVersion.VERSION1_4, + }); + + // THEN + expect(stack).to(haveResource('AWS::ECS::Service', { + DeploymentConfiguration: { + MaximumPercent: 200, + MinimumHealthyPercent: 50, + DeploymentCircuitBreaker: { + Enable: true, + Rollback: true, + }, + }, + })); + + test.done(); + }, + 'throws an exception if both serviceArn and serviceName were provided for fromEc2ServiceAttributes'(test: Test) { // GIVEN const stack = new cdk.Stack(); From 95c29b1a990b4e1b4631f1d6ef7e3c9ab394a9a8 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Mon, 21 Dec 2020 10:55:35 +0000 Subject: [PATCH 2/6] fix tests --- packages/@aws-cdk/aws-ecs/README.md | 27 +++++-------------- .../@aws-cdk/aws-ecs/lib/base/base-service.ts | 13 +++++---- .../aws-ecs/test/ec2/test.ec2-service.ts | 16 ----------- .../test/fargate/test.fargate-service.ts | 21 +++------------ 4 files changed, 19 insertions(+), 58 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/README.md b/packages/@aws-cdk/aws-ecs/README.md index 0f056584833e2..15a0ca4f1d21c 100644 --- a/packages/@aws-cdk/aws-ecs/README.md +++ b/packages/@aws-cdk/aws-ecs/README.md @@ -335,35 +335,22 @@ const service = new ecs.FargateService(this, 'Service', { `Services` by default will create a security group if not provided. If you'd like to specify which security groups to use you can override the `securityGroups` property. -### Deployment circuit breaker +### Deployment circuit breaker and rollback -By default, Amazon ECS [deployment circuit breaker](https://aws.amazon.com/tw/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) -is enabled and will rollback on deployment failure. With this feature, Amazon ECS will automatically roll back unhealthy -service deployments without the need for manual intervention. As this feature with AWS Fargate requires -platform `1.4.0` or above. Make sure to specify the `platformVersion` to `1.4` as the current default version points to `1.3`. +Amazon ECS [deployment circuit breaker](https://aws.amazon.com/tw/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) +automatically rolls back unhealthy service deployments without the need for manual intervention. Use `deploymentCircuitBreaker` to enable +deployment circuit breaker and `deploymentRollback` for automatically rollback. See [Using the deployment circuit breaker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) +for more details. - -```ts -const service = new ecs.FargateService(stack, 'Service', { - cluster, - taskDefinition, - platformVersion: ecs.FargatePlatformVersion.VERSION1_4, -}); -``` - -To opt-out this feature, explicitly disable `deploymentCircuitBreaker` and `deploymentRollback`. - - ```ts const service = new ecs.FargateService(stack, 'Service', { cluster, taskDefinition, - deploymentCircuitBreaker: false, - deploymentRollback: false, + deploymentCircuitBreaker: true, + deploymentRollback: true, }); ``` - ### Include an application/network load balancer `Services` are load balancing targets and can be added to a target group, which will be attached to an application/network load balancers: diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index ed493ea724be4..a8e2b981698ec 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -164,14 +164,14 @@ export interface BaseServiceOptions { /** * Whether to enable the deplloyment circuit breaker - * @default true + * @default false */ readonly deploymentCircuitBreaker?: boolean; /** * Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, * when a service deployment fails, the service is rolled back to the last deployment that completed successfully. - * @default true + * @default false */ readonly deploymentRollback?: boolean; } @@ -371,13 +371,16 @@ export abstract class BaseService extends Resource const deploymentConfiguration = { DeploymentCircuitBreaker: { - Enable: props.deploymentCircuitBreaker ?? true, - Rollback: props.deploymentRollback ?? true, + Enable: props.deploymentCircuitBreaker, + Rollback: props.deploymentRollback, }, }; // TODO: fix this when this property is available in CfnService - this.resource.addPropertyOverride('DeploymentConfiguration', deploymentConfiguration); + // we only override this property if any of the props is defined + if (props.deploymentCircuitBreaker || props.deploymentRollback) { + this.resource.addPropertyOverride('DeploymentConfiguration', deploymentConfiguration); + } if (props.deploymentController?.type === DeploymentControllerType.EXTERNAL) { Annotations.of(this).addWarning('taskDefinition and launchType are blanked out when using external deployment controller.'); diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts b/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts index 0593051ae229b..a5a2fcdbf63fb 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts @@ -40,10 +40,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DesiredCount: 1, LaunchType: LaunchType.EC2, @@ -185,10 +181,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 150, MinimumHealthyPercent: 55, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DeploymentController: { Type: ecs.DeploymentControllerType.CODE_DEPLOY, @@ -459,10 +451,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DesiredCount: 1, SchedulingStrategy: 'REPLICA', @@ -618,10 +606,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 100, MinimumHealthyPercent: 0, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, })); diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts index a5d8ab6fc858b..a54ac3013adb8 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts @@ -39,10 +39,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DesiredCount: 1, LaunchType: LaunchType.FARGATE, @@ -216,6 +212,8 @@ export = { deploymentController: { type: ecs.DeploymentControllerType.CODE_DEPLOY, }, + deploymentCircuitBreaker: true, + deploymentRollback: true, securityGroup: new ec2.SecurityGroup(stack, 'SecurityGroup1', { allowAllOutbound: true, description: 'Example', @@ -363,10 +361,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DeploymentController: { Type: 'EXTERNAL', @@ -467,10 +461,6 @@ export = { expect(stack).to(haveResourceLike('AWS::ECS::Service', { DeploymentConfiguration: { MinimumHealthyPercent: 0, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, })); @@ -553,10 +543,6 @@ export = { DeploymentConfiguration: { MaximumPercent: 200, MinimumHealthyPercent: 50, - DeploymentCircuitBreaker: { - Enable: true, - Rollback: true, - }, }, DesiredCount: 1, LaunchType: LaunchType.FARGATE, @@ -1820,7 +1806,8 @@ export = { new ecs.FargateService(stack, 'EcsService', { cluster, taskDefinition, - platformVersion: ecs.FargatePlatformVersion.VERSION1_4, + deploymentCircuitBreaker: true, + deploymentRollback: true, }); // THEN From 37f65175f18a53dba4ae49228b4567677edd87fb Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 22 Dec 2020 07:35:46 +0800 Subject: [PATCH 3/6] Update packages/@aws-cdk/aws-ecs/lib/base/base-service.ts Co-authored-by: Penghao He --- packages/@aws-cdk/aws-ecs/lib/base/base-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index a8e2b981698ec..179911349bac2 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -163,7 +163,7 @@ export interface BaseServiceOptions { readonly deploymentController?: DeploymentController; /** - * Whether to enable the deplloyment circuit breaker + * Whether to enable the deployment circuit breaker * @default false */ readonly deploymentCircuitBreaker?: boolean; From 3ea13841ed1945593367d96606b6c94af4858f9a Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 22 Dec 2020 08:20:33 +0000 Subject: [PATCH 4/6] add circuitBreaker interface --- packages/@aws-cdk/aws-ecs/README.md | 7 ++- .../@aws-cdk/aws-ecs/lib/base/base-service.ts | 44 ++++++++++--------- .../test/fargate/test.fargate-service.ts | 6 +-- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/README.md b/packages/@aws-cdk/aws-ecs/README.md index 15a0ca4f1d21c..2493122ed4228 100644 --- a/packages/@aws-cdk/aws-ecs/README.md +++ b/packages/@aws-cdk/aws-ecs/README.md @@ -338,16 +338,15 @@ If you'd like to specify which security groups to use you can override the `secu ### Deployment circuit breaker and rollback Amazon ECS [deployment circuit breaker](https://aws.amazon.com/tw/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) -automatically rolls back unhealthy service deployments without the need for manual intervention. Use `deploymentCircuitBreaker` to enable -deployment circuit breaker and `deploymentRollback` for automatically rollback. See [Using the deployment circuit breaker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) +automatically rolls back unhealthy service deployments without the need for manual intervention. Use `circuitBreaker` to enable +deployment circuit breaker and optionally enable `deploymentRollback` for automatically rollback. See [Using the deployment circuit breaker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) for more details. ```ts const service = new ecs.FargateService(stack, 'Service', { cluster, taskDefinition, - deploymentCircuitBreaker: true, - deploymentRollback: true, + circuitBreaker: { rollback: true }, }); ``` diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index 179911349bac2..5b12988450f26 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -44,6 +44,18 @@ export interface DeploymentController { readonly type?: DeploymentControllerType; } +/** + * The deployment circuit breaker to use for the service + */ +export interface DeploymentCircuitBreaker { + /** + * Whether to enable rollback on deployment failure + * @default false + */ + readonly rollback?: boolean; + +} + export interface EcsTarget { /** * The name of the container. @@ -164,16 +176,9 @@ export interface BaseServiceOptions { /** * Whether to enable the deployment circuit breaker - * @default false + * @default - disabled */ - readonly deploymentCircuitBreaker?: boolean; - - /** - * Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, - * when a service deployment fails, the service is rolled back to the last deployment that completed successfully. - * @default false - */ - readonly deploymentRollback?: boolean; + readonly circuitBreaker?: DeploymentCircuitBreaker; } /** @@ -369,19 +374,16 @@ export abstract class BaseService extends Resource ...additionalProps, }); - const deploymentConfiguration = { - DeploymentCircuitBreaker: { - Enable: props.deploymentCircuitBreaker, - Rollback: props.deploymentRollback, - }, - }; - - // TODO: fix this when this property is available in CfnService - // we only override this property if any of the props is defined - if (props.deploymentCircuitBreaker || props.deploymentRollback) { + if (props.circuitBreaker) { + const deploymentConfiguration = { + DeploymentCircuitBreaker: { + Enable: true, + Rollback: props.circuitBreaker.rollback ?? false, + }, + }; + // TODO: fix this when this property is available in CfnService this.resource.addPropertyOverride('DeploymentConfiguration', deploymentConfiguration); - } - + }; if (props.deploymentController?.type === DeploymentControllerType.EXTERNAL) { Annotations.of(this).addWarning('taskDefinition and launchType are blanked out when using external deployment controller.'); } diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts index a54ac3013adb8..546844c604eac 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts @@ -212,8 +212,7 @@ export = { deploymentController: { type: ecs.DeploymentControllerType.CODE_DEPLOY, }, - deploymentCircuitBreaker: true, - deploymentRollback: true, + circuitBreaker: { rollback: true }, securityGroup: new ec2.SecurityGroup(stack, 'SecurityGroup1', { allowAllOutbound: true, description: 'Example', @@ -1806,8 +1805,7 @@ export = { new ecs.FargateService(stack, 'EcsService', { cluster, taskDefinition, - deploymentCircuitBreaker: true, - deploymentRollback: true, + circuitBreaker: { rollback: true }, }); // THEN From 3c7f0fafd4220565061f83b85b8a18ff67091eb7 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 22 Dec 2020 08:45:29 +0000 Subject: [PATCH 5/6] minor --- packages/@aws-cdk/aws-ecs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-ecs/README.md b/packages/@aws-cdk/aws-ecs/README.md index 2493122ed4228..f2056229c6bf5 100644 --- a/packages/@aws-cdk/aws-ecs/README.md +++ b/packages/@aws-cdk/aws-ecs/README.md @@ -339,7 +339,7 @@ If you'd like to specify which security groups to use you can override the `secu Amazon ECS [deployment circuit breaker](https://aws.amazon.com/tw/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) automatically rolls back unhealthy service deployments without the need for manual intervention. Use `circuitBreaker` to enable -deployment circuit breaker and optionally enable `deploymentRollback` for automatically rollback. See [Using the deployment circuit breaker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) +deployment circuit breaker and optionally enable `rollback` for automatic rollback. See [Using the deployment circuit breaker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) for more details. ```ts From cc2adc86643981db5081daa066733fd3ce60ed47 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 22 Dec 2020 23:43:31 +0000 Subject: [PATCH 6/6] update doc for circuitBreaker --- packages/@aws-cdk/aws-ecs/lib/base/base-service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index 5b12988450f26..f6f725756167d 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -175,7 +175,8 @@ export interface BaseServiceOptions { readonly deploymentController?: DeploymentController; /** - * Whether to enable the deployment circuit breaker + * Whether to enable the deployment circuit breaker. If this property is defined, circuit breaker will be implicitly + * enabled. * @default - disabled */ readonly circuitBreaker?: DeploymentCircuitBreaker;