Search code examples
amazon-ecsaws-cdkecs-taskdefinition

How to specify human readable name for ECS Task Definition in AWS CDK?


I use aws-cdk-lib/aws-ecs-patterns/ApplicationLoadBalancedFargateService class to deploy ECS Service from CDK.

const service = new ecs_patterns.ApplicationLoadBalancedFargateService(this, `service-${envName}`, {
    serviceName: `svc-${this.envName}`,
    loadBalancerName: `svc-alb-${this.envName}`,
    targetProtocol: ApplicationProtocol.HTTP,
    protocol: ApplicationProtocol.HTTPS,
    domainName: "svc.example.com",
    redirectHTTP: true,
    domainZone: r53.HostedZone.fromHostedZoneAttributes(this, `svc-zone-${this.envName}`, { ... }),
    certificate: acm.Certificate.fromCertificateArn(this, `svc-cert-${this.envName}`, "arn:aws:acm:xxxxxx"),
    cluster: mainECSCluster,
    cpu: 512,
    memoryLimitMiB: 1024,
    desiredCount: 2,
    taskImageOptions: {
        containerName: `svc-web-${this.envName}`,
        containerPort: 80,
        image: ecs.ContainerImage.fromEcrRepository(repo),
        enableLogging: true,
        logDriver: ecs.LogDrivers.firelens({ ... }),
        secrets: this.buildAppEnvironment({ ... }),
    },
    publicLoadBalancer: true
});

All works well except I cannot unsee the task definition names: BlaBlaBlaCdkStackdevblablablaservicedevTaskDefA258F369

Monitoring dashboards look terrible with this trash.

Can you suggest how to set human-readable names for task definitions?


Solution

  • Found, use taskImageOptions.family string, this will set the task definition name.

            ...
            memoryLimitMiB: 1024,
            desiredCount: 2,
            taskImageOptions: {
                family: `svc-web-${this.envName}`,
                containerName: `svc-web-${this.envName}`,
                containerPort: 80,
            ...