def clone_asg(client, asg, name, lc_name):
    """
    Create a new ASG identical to the given one except in name and launch
    configuration.

    """
    PARAMS_TO_CLONE = [
        'MinSize',
        'MaxSize',
        'DesiredCapacity',
        'DefaultCooldown',
        'AvailabilityZones',
        'LoadBalancerNames',
        'HealthCheckType',
        'HealthCheckGracePeriod',
        'PlacementGroup',
        'VPCZoneIdentifier',
        'TerminationPolicies',
        'NewInstancesProtectedFromScaleIn',
    ]
    params = {
        key: asg[key] for key in PARAMS_TO_CLONE if key in asg
    }
    params['Tags'] = [{
        'ResourceId': name,
        'ResourceType': 'auto-scaling-group',
        'Key': tag['Key'],
        'Value': tag['Value'],
        'PropagateAtLaunch': tag['PropagateAtLaunch'],
    } for tag in asg['Tags']]

    client.create_auto_scaling_group(
        AutoScalingGroupName=name,
        LaunchConfigurationName=lc_name,
        **params
    )
    return client.describe_auto_scaling_groups(
        AutoScalingGroupNames=[name]
    )['AutoScalingGroups'][0]