def METHOD_NAME(  # noqa: PLR0913
    self,
    data_asset: _SPARK_FILE_PATH_ASSET_TYPES_UNION,
    s3_prefix: str = "",
    s3_delimiter: str = "/",
    s3_max_keys: int = 1000,
    s3_recursive_file_discovery: bool = False,
    **kwargs,
) -> None:
    """Builds and attaches the `S3DataConnector` to the asset."""
    if kwargs:
        raise TypeError(
            f"_build_data_connector() got unexpected keyword arguments {list(kwargs.keys())}"
        )
    data_asset._data_connector = self.data_connector_type.build_data_connector(
        datasource_name=self.name,
        data_asset_name=data_asset.name,
        s3_client=self._get_s3_client(),
        batching_regex=data_asset.batching_regex,
        bucket=self.bucket,
        prefix=s3_prefix,
        delimiter=s3_delimiter,
        max_keys=s3_max_keys,
        recursive_file_discovery=s3_recursive_file_discovery,
        file_path_template_map_fn=S3Url.OBJECT_URL_TEMPLATE.format,
    )
    # build a more specific `_test_connection_error_message`
    data_asset._test_connection_error_message = (
        self.data_connector_type.build_test_connection_error_message(
            data_asset_name=data_asset.name,
            batching_regex=data_asset.batching_regex,
            bucket=self.bucket,
            prefix=s3_prefix,
            delimiter=s3_delimiter,
            recursive_file_discovery=s3_recursive_file_discovery,
        )
    )