Skip to content

Commit df12197

Browse files
DavidChristiansenElad Ben-Israel
authored and
Elad Ben-Israel
committed
feat(ecs-patterns): LoadBalancedFargateService - allow specifying containerName and role (#2764)
Implementation of execution tests, task role and container name overrides + tests
1 parent 849b693 commit df12197

File tree

4 files changed

+901
-5
lines changed

4 files changed

+901
-5
lines changed

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

+37-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import ecs = require('@aws-cdk/aws-ecs');
2+
import iam = require('@aws-cdk/aws-iam');
23
import cdk = require('@aws-cdk/cdk');
34
import { LoadBalancedServiceBase, LoadBalancedServiceBaseProps } from '../base/load-balanced-service-base';
45

@@ -42,6 +43,34 @@ export interface LoadBalancedFargateServiceProps extends LoadBalancedServiceBase
4243
* @default 512
4344
*/
4445
readonly memoryLimitMiB?: number;
46+
47+
/**
48+
* Override for the Fargate Task Definition execution role
49+
*
50+
* @default - No value
51+
*/
52+
readonly executionRole?: iam.IRole;
53+
54+
/**
55+
* Override for the Fargate Task Definition task role
56+
*
57+
* @default - No value
58+
*/
59+
readonly taskRole?: iam.IRole;
60+
61+
/**
62+
* Override value for the container name
63+
*
64+
* @default - No value
65+
*/
66+
readonly containerName?: string;
67+
68+
/**
69+
* Override value for the service name
70+
*
71+
* @default - No value
72+
*/
73+
readonly serviceName?: string;
4574
}
4675

4776
/**
@@ -59,10 +88,14 @@ export class LoadBalancedFargateService extends LoadBalancedServiceBase {
5988

6089
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
6190
memoryLimitMiB: props.memoryLimitMiB,
62-
cpu: props.cpu
91+
cpu: props.cpu,
92+
executionRole: props.executionRole !== undefined ? props.executionRole : undefined,
93+
taskRole: props.taskRole !== undefined ? props.taskRole : undefined
6394
});
6495

65-
const container = taskDefinition.addContainer('web', {
96+
const containerName = props.containerName !== undefined ? props.containerName : 'web';
97+
98+
const container = taskDefinition.addContainer(containerName, {
6699
image: props.image,
67100
logging: this.logDriver,
68101
environment: props.environment
@@ -71,13 +104,13 @@ export class LoadBalancedFargateService extends LoadBalancedServiceBase {
71104
container.addPortMappings({
72105
containerPort: props.containerPort || 80,
73106
});
74-
75107
const assignPublicIp = props.publicTasks !== undefined ? props.publicTasks : false;
76108
const service = new ecs.FargateService(this, "Service", {
77109
cluster: props.cluster,
78110
desiredCount: props.desiredCount || 1,
79111
taskDefinition,
80-
assignPublicIp
112+
assignPublicIp,
113+
serviceName: props.serviceName || undefined
81114
});
82115
this.service = service;
83116

0 commit comments

Comments
 (0)