Skip to content

Commit 40fb61f

Browse files
committed
feat: add public property in FargetTaskDefinition
1 parent cda56d4 commit 40fb61f

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/application-load-balanced-fargate-service.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ export class ApplicationLoadBalancedFargateService extends ApplicationLoadBalanc
103103
? taskImageOptions.logDriver : enableLogging
104104
? this.createAWSLogDriver(this.node.id) : undefined;
105105

106-
this.validateContainerCpu(props.containerCpu, props.cpu);
107-
this.validateContainerMemoryLimitMiB(props.containerMemoryLimitMiB, props.memoryLimitMiB);
106+
this.validateContainerCpu(this.taskDefinition.cpu, props.containerCpu);
107+
this.validateContainerMemoryLimitMiB(this.taskDefinition.memoryMiB, props.containerMemoryLimitMiB);
108108

109109
const containerName = taskImageOptions.containerName ?? 'web';
110110
const container = this.taskDefinition.addContainer(containerName, {
@@ -174,7 +174,7 @@ export class ApplicationLoadBalancedFargateService extends ApplicationLoadBalanc
174174
}
175175
}
176176

177-
private validateContainerCpu(containerCpu?: number, cpu: number = 256) { // default value for cpu is 256
177+
private validateContainerCpu(cpu: number, containerCpu?: number) {
178178
if (containerCpu === undefined || Token.isUnresolved(containerCpu) || Token.isUnresolved(cpu)) {
179179
return;
180180
}
@@ -187,7 +187,7 @@ export class ApplicationLoadBalancedFargateService extends ApplicationLoadBalanc
187187
}
188188
}
189189

190-
private validateContainerMemoryLimitMiB(containerMemoryLimitMiB?: number, memoryLimitMiB: number = 512) { // default value for memoryLimitMiB is 512
190+
private validateContainerMemoryLimitMiB(memoryLimitMiB: number, containerMemoryLimitMiB?: number) {
191191
if (containerMemoryLimitMiB === undefined || Token.isUnresolved(containerMemoryLimitMiB) || Token.isUnresolved(memoryLimitMiB)) {
192192
return;
193193
}

packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-task-definition.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,21 +152,37 @@ export class FargateTaskDefinition extends TaskDefinition implements IFargateTas
152152
*/
153153
public readonly ephemeralStorageGiB?: number;
154154

155+
/**
156+
* The number of cpu units used by the task.
157+
*/
158+
public readonly cpu: number;
159+
160+
/**
161+
* The amount (in MiB) of memory used by the task.
162+
*/
163+
public readonly memoryMiB: number;
164+
155165
/**
156166
* Constructs a new instance of the FargateTaskDefinition class.
157167
*/
158168
constructor(scope: Construct, id: string, props: FargateTaskDefinitionProps = {}) {
169+
const cpu = props.cpu ?? 256;
170+
const memoryMiB = props.memoryLimitMiB ?? 512;
171+
159172
super(scope, id, {
160173
...props,
161-
cpu: props.cpu !== undefined ? Tokenization.stringifyNumber(props.cpu) : '256',
162-
memoryMiB: props.memoryLimitMiB !== undefined ? Tokenization.stringifyNumber(props.memoryLimitMiB) : '512',
174+
cpu: Tokenization.stringifyNumber(cpu),
175+
memoryMiB: Tokenization.stringifyNumber(memoryMiB),
163176
compatibility: Compatibility.FARGATE,
164177
networkMode: NetworkMode.AWS_VPC,
165178
pidMode: props.pidMode,
166179
});
167180
// Enhanced CDK Analytics Telemetry
168181
addConstructMetadata(this, props);
169182

183+
this.cpu = cpu;
184+
this.memoryMiB = memoryMiB;
185+
170186
// eslint-disable-next-line max-len
171187
if (props.ephemeralStorageGiB && !Token.isUnresolved(props.ephemeralStorageGiB) && (props.ephemeralStorageGiB < 21 || props.ephemeralStorageGiB > 200)) {
172188
throw new Error('Ephemeral storage size must be between 21GiB and 200GiB');

0 commit comments

Comments
 (0)