def __init__()

in base_host_group/host_group.py [0:0]


    def __init__(self, scope: core.Construct, cid: str,
                 component: str,
                 network: GenericNetwork,
                 security: GenericSecurity,
                 workload_key: _kms.Key,
                 ops_key: KeyPair = None,
                 vpc_subnets: _ec2.SubnetSelection = None,
                 ami_id: str = None,
                 private_ip: str = None,
                 **kwargs):
        super().__init__(scope, cid, **kwargs)

        self.instance_id = ""
        self._workload_key = workload_key
        sec_group = security.get_security_group(component + "SG")
        if not sec_group:
            sec_group = security.create_security_group(component + "SG")
            endpt_sg = security.get_security_group("VPCEndpointSG")
            endpt_sg.connections.allow_from(
                sec_group,
                port_range=_ec2.Port(
                    protocol=_ec2.Protocol.TCP,
                    string_representation=component + " -> Endpoint (443)",
                    from_port=443,
                    to_port=443
                ),
                description="VPC Endpoint Ingress rule from " + component
            )
            sec_group.connections.allow_to(
                endpt_sg,
                port_range=_ec2.Port(
                    protocol=_ec2.Protocol.TCP,
                    string_representation=component + " -> Endpoint (443)",
                    from_port=443,
                    to_port=443
                ),
                description="Egress rule to VPC Endpoint for " + component

            )

        instance_type = _ec2.InstanceType.of(instance_class=_ec2.InstanceClass.STANDARD5,
                                             instance_size=_ec2.InstanceSize.XLARGE)
        key_name = None
        if ops_key is not None:
            key_name = ops_key.key_pair_name

        if vpc_subnets is None:
            vpc_subnets = _ec2.SubnetSelection(subnet_group_name=component)

        user_data = None
        if ami_id is None:
            machine_image = _ec2.MachineImage.lookup(
                name="RHEL-8.3.0_HVM-????????-x86_64-0-Hourly2-GP2", owners=["309956199498"])
            user_data = _ec2.UserData.for_linux()
            for line in get_user_data(self.region, self.node.try_get_context("qs_s3_bucket")):
                user_data.add_commands(line)
        else:
            machine_image = _ec2.MachineImage.lookup(name="*", filters={"image-id": [ami_id]})

        instance_role = security.get_instance_role(component)
        if not instance_role:
            instance_role = security.create_instance_role(component)

        # noinspection PyTypeChecker
        self.instance = _ec2.Instance(self, cid, instance_type=instance_type,
                                      machine_image=machine_image,
                                      block_devices=[_ec2.BlockDevice(
                                          device_name="/dev/sda1",
                                          volume=_ec2.BlockDeviceVolume.ebs(
                                              volume_size=100, encrypted=True))],
                                      vpc=network.get_vpc(),
                                      role=instance_role, security_group=sec_group,
                                      vpc_subnets=vpc_subnets, key_name=key_name,
                                      private_ip_address=private_ip, user_data=user_data)
        self.instance_id = self.instance.instance_id