def METHOD_NAME(
    vpc_name: str, vpc: ec2.Vpc
) -> Callable[SecurityGroupParams, ec2.SecurityGroup]:
    """Create a security group that exposes a webserver to the public internet.
    :param vpc_name: The name of the VPC where the security group is being created.
    :type vpc_name: str
    :param vpc: The VPC instance that the security group is being created in.
    :type vpc: ec2.Vpc
    :returns: A partial SecurityGroup object that can be finalized in the
        importing module
    :rtype: partial
    """
    return partial(
        ec2.SecurityGroup,
        f"{vpc_name}-web-server",
        description="HTTP/HTTPS access from the public internet",
        vpc_id=vpc.id,
        ingress=[
            ec2.SecurityGroupIngressArgs(
                from_port=80,
                to_port=80,
                protocol="tcp",
                cidr_blocks=["0.0.0.0/0"],
                ipv6_cidr_blocks=["::/0"],
                description="HTTP access from the public internet",
            ),
            ec2.SecurityGroupIngressArgs(
                from_port=443,
                to_port=443,
                protocol="tcp",
                cidr_blocks=["0.0.0.0/0"],
                ipv6_cidr_blocks=["::/0"],
                description="HTTPS access from the public internet",
            ),
        ],
        egress=default_egress_args,
    )