<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def aws(product, tile, folder, redownload, info, entire, bands, l2a):
 """Download Sentinel-2 data from Sentinel-2 on AWS to ESA SAFE format. Download uses multiple threads. \b Examples with Sentinel-2 L1C data: sentinelhub.aws --product S2A_MSIL1C_20170414T003551_N0204_R016_T54HVH_20170414T003551 sentinelhub.aws --product S2A_MSIL1C_20170414T003551_N0204_R016_T54HVH_20170414T003551 -i sentinelhub.aws --product S2A_MSIL1C_20170414T003551_N0204_R016_T54HVH_20170414T003551 -f /home/ESA_Products sentinelhub.aws --product S2A_MSIL1C_20170414T003551_N0204_R016_T54HVH_20170414T003551 --bands B08,B11 sentinelhub.aws --tile T54HVH 2017-04-14 sentinelhub.aws --tile T54HVH 2017-04-14 -e \b Examples with Sentinel-2 L2A data: sentinelhub.aws --product S2A_MSIL2A_20180402T151801_N0207_R068_T33XWJ_20180402T202222 sentinelhub.aws --tile T33XWJ 2018-04-02 --l2a """

    band_list = None if bands is None else bands.split(',')
    data_source = DataSource.SENTINEL2_L2A if l2a else DataSource.SENTINEL2_L1C
    if info:
        if product is None:
            click.echo(get_safe_format(tile=tile, entire_product=entire, data_source=data_source))
        else:
            click.echo(get_safe_format(product_id=product))
    else:
        if product is None:
            download_safe_format(tile=tile, folder=folder, redownload=redownload, entire_product=entire,
                                 bands=band_list, data_source=data_source)
        else:
            download_safe_format(product_id=product, folder=folder, redownload=redownload, bands=band_list)