def METHOD_NAME(cmd,
                    snapshot_name,
                    filters,
                    name=None,
                    connection_string=None,
                    auth_mode='key',
                    endpoint=None,
                    retention_period=None,
                    composition_type=None,
                    tags=None
                    ):
    client = _get_snapshot_client(cmd, name, connection_string, auth_mode, endpoint)
    try:
        return client.begin_create_snapshot(snapshot_name, filters, composition_type, retention_period, tags)
    except HttpResponseError as exception:
        if exception.status_code == StatusCodes.CONFLICT:
            raise AzureResponseError("A snapshot with name '{}' already exists.".format(snapshot_name))
        raise AzureResponseError(str(exception))
    except Exception as exception:
        raise CLIError("Failed to create snapshot. {}".format(str(exception)))