private createEcsServiceTask()

in infra/ecs-service/ecs-common-service-stack.ts [21:59]


    private createEcsServiceTask(cluster: ecs.ICluster, cpu: number, memory: number): ecs.FargateService {
        const baseName = this.stackName;
        const targetServiceStackName = this.stackConfig.TargetStack;

        const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
            cpu: cpu,
            memoryLimitMiB: memory,
        });

        const container = taskDefinition.addContainer("Container", {
            containerName: `${baseName}Container`,
            image: ecs.ContainerImage.fromAsset(this.stackConfig.AppPath),
            logging: new ecs.AwsLogDriver({
                streamPrefix: `${baseName}Log`
            }),
            environment: {
                Namespace: `${this.projectPrefix}-NS`,
                TargetServiceName: targetServiceStackName,
                AlbDnsName: this.getParameter(`${targetServiceStackName}AlbDnsName`)
            }
        });

        const service = new ecs.FargateService(this, 'Service', {
            serviceName: `${baseName}Service`,
            cluster,
            taskDefinition,
            desiredCount: this.stackConfig.DesiredTasks,
            cloudMapOptions: {
                name: this.stackName,
            }
        });

        const serviceSecurityGroup = service.connections.securityGroups[0];
        const targetSecurityGroupId = this.getParameter(`${targetServiceStackName}ServiceSecurityGroupId`)
        const targetSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'target-security-group', targetSecurityGroupId);
        targetSecurityGroup.addIngressRule(serviceSecurityGroup, ec2.Port.tcp(parseInt(this.getVariable(`${this.stackConfig.TargetStack}`))));

        return service;
    }