def create_ecs_cluster()

in cdk/cdk-domainless-mode/cdk/cdk_stack.py [0:0]


    def create_ecs_cluster(self, cluster_name: str,
                                instance_tag: str, password: str,
                                domain_name: str,
                                key_pair: ec2.KeyPair,
                                number_of_gmsa_accounts: int,
                                vpc : str,
                                security_group : str, rpm_file:str, s3_bucket:str):

        machine_image = ecs.EcsOptimizedImage.amazon_linux2023(hardware_type=ecs.AmiHardwareType.STANDARD)
        instance_type=ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.XLARGE)
        role = iam.Role(self, "Role", role_name="ecs-instance-role", assumed_by=iam.ServicePrincipal("ec2.amazonaws.com"))

        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("service-role/AmazonEC2ContainerServiceforEC2Role"))
        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonECS_FullAccess"))
        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("SecretsManagerReadWrite"))
        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSSMFullAccess"))
        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonS3FullAccess"))
        # add role for Directory Service
        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AWSDirectoryServiceFullAccess"))

        user_data_script = self.setup_linux_userdata(instance_tag, password, domain_name, key_pair.key_pair_name, number_of_gmsa_accounts, rpm_file, s3_bucket)
        user_data = ec2.UserData.for_linux()
        user_data.add_commands(user_data_script)
        #user_data = cdk.Fn.base64(user_data.render())

        subnet_selection = ec2.SubnetSelection(
                                subnet_type=ec2.SubnetType.PUBLIC
                            )
        auto_scaling_group = autoscaling.AutoScalingGroup(self, "MyAutoScalingGroup",
                                                           vpc=vpc, require_imdsv2 = True,
                                                           min_capacity=1,
                                                           max_capacity=1,
                                                           desired_capacity=1,
                                                           security_group = security_group,
                                                           machine_image = machine_image,
                                                           instance_type = instance_type,
                                                           key_pair = key_pair,
                                                           role = role,
                                                           associate_public_ip_address = True,
                                                           vpc_subnets = subnet_selection,
                                                           user_data = user_data
                                                           )
        capacity_provider = ecs.AsgCapacityProvider(self, "MyCapacityProvider",
                                                    auto_scaling_group=auto_scaling_group,
                                                    capacity_provider_name="MyCapacityProvider",
                                                    target_capacity_percent=100)

        cluster = ecs.Cluster(self, "MyCluster",
                              cluster_name=cluster_name,
                              container_insights=True,
                              vpc=self.vpc
                              )
        cluster.add_asg_capacity_provider(capacity_provider)

        return cluster