From 885dc88afbdedc9089e8687aa84b2d360316c942 Mon Sep 17 00:00:00 2001 From: Karthik Kumar Viswanathan Date: Wed, 9 Apr 2025 08:59:00 -0700 Subject: [PATCH] fix(ecs): Move AvailabilityZoneRebalancing into aws-ecs-patterns. --- .../lib/availability-zone-rebalancing.ts | 16 ++++++++++++++++ .../lib/base/fargate-service-base.ts | 12 ++++++++++++ .../aws-cdk-lib/aws-ecs-patterns/lib/index.ts | 2 ++ .../lib/availability-zone-rebalancing.ts | 17 +---------------- .../aws-ecs/lib/fargate/fargate-service.ts | 2 +- 5 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 packages/aws-cdk-lib/aws-ecs-patterns/lib/availability-zone-rebalancing.ts diff --git a/packages/aws-cdk-lib/aws-ecs-patterns/lib/availability-zone-rebalancing.ts b/packages/aws-cdk-lib/aws-ecs-patterns/lib/availability-zone-rebalancing.ts new file mode 100644 index 0000000000000..000396d64f5b6 --- /dev/null +++ b/packages/aws-cdk-lib/aws-ecs-patterns/lib/availability-zone-rebalancing.ts @@ -0,0 +1,16 @@ +/** + * Indicates whether to use Availability Zone rebalancing for an ECS service. + * + * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html + */ +export enum AvailabilityZoneRebalancing { + /** + * Availability zone rebalancing is enabled. + */ + ENABLED = 'ENABLED', + + /** + * Availability zone rebalancing is disabled. + */ + DISABLED = 'DISABLED', +} diff --git a/packages/aws-cdk-lib/aws-ecs-patterns/lib/base/fargate-service-base.ts b/packages/aws-cdk-lib/aws-ecs-patterns/lib/base/fargate-service-base.ts index 838bacd046d45..331ec69de8161 100644 --- a/packages/aws-cdk-lib/aws-ecs-patterns/lib/base/fargate-service-base.ts +++ b/packages/aws-cdk-lib/aws-ecs-patterns/lib/base/fargate-service-base.ts @@ -1,4 +1,5 @@ import { FargatePlatformVersion, FargateTaskDefinition, RuntimePlatform } from '../../../aws-ecs'; +import { AvailabilityZoneRebalancing } from '../availability-zone-rebalancing'; export interface FargateServiceBaseProps { /** @@ -89,4 +90,15 @@ export interface FargateServiceBaseProps { * @default - If the property is undefined, `operatingSystemFamily` is LINUX and `cpuArchitecture` is X86_64 */ readonly runtimePlatform?: RuntimePlatform; + + /** + * Whether to use Availability Zone rebalancing for the service. + * + * If enabled, `maxHealthyPercent` must be greater than 100, and the service must not be a target + * of a Classic Load Balancer. + * + * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html + * @default AvailabilityZoneRebalancing.DISABLED + */ + readonly availabilityZoneRebalancing?: AvailabilityZoneRebalancing; } diff --git a/packages/aws-cdk-lib/aws-ecs-patterns/lib/index.ts b/packages/aws-cdk-lib/aws-ecs-patterns/lib/index.ts index 5786b6ab10b0a..c1812a432f7be 100644 --- a/packages/aws-cdk-lib/aws-ecs-patterns/lib/index.ts +++ b/packages/aws-cdk-lib/aws-ecs-patterns/lib/index.ts @@ -22,3 +22,5 @@ export * from './fargate/application-multiple-target-groups-fargate-service'; export * from './base/network-multiple-target-groups-service-base'; export * from './ecs/network-multiple-target-groups-ecs-service'; export * from './fargate/network-multiple-target-groups-fargate-service'; + +export * from './availability-zone-rebalancing'; \ No newline at end of file diff --git a/packages/aws-cdk-lib/aws-ecs/lib/availability-zone-rebalancing.ts b/packages/aws-cdk-lib/aws-ecs/lib/availability-zone-rebalancing.ts index 000396d64f5b6..66c8c23c1331b 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/availability-zone-rebalancing.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/availability-zone-rebalancing.ts @@ -1,16 +1 @@ -/** - * Indicates whether to use Availability Zone rebalancing for an ECS service. - * - * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html - */ -export enum AvailabilityZoneRebalancing { - /** - * Availability zone rebalancing is enabled. - */ - ENABLED = 'ENABLED', - - /** - * Availability zone rebalancing is disabled. - */ - DISABLED = 'DISABLED', -} +export { AvailabilityZoneRebalancing } from '../../aws-ecs-patterns'; diff --git a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts index 9117b2a4200c6..857f224ef064a 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts @@ -3,7 +3,7 @@ import * as ec2 from '../../../aws-ec2'; import * as elb from '../../../aws-elasticloadbalancing'; import * as cdk from '../../../core'; import { addConstructMetadata, MethodMetadata } from '../../../core/lib/metadata-resource'; -import { AvailabilityZoneRebalancing } from '../availability-zone-rebalancing'; +import { AvailabilityZoneRebalancing } from '../../../aws-ecs-patterns'; import { BaseService, BaseServiceOptions, DeploymentControllerType, IBaseService, IService, LaunchType } from '../base/base-service'; import { fromServiceAttributes, extractServiceNameFromArn } from '../base/from-service-attributes'; import { TaskDefinition } from '../base/task-definition';