Skip to content

Commit b4187d8

Browse files
committed
added functionality to read data from s3 buckets
1 parent ff49433 commit b4187d8

File tree

5 files changed

+585
-321
lines changed

5 files changed

+585
-321
lines changed

src/pyart

src/pyrad_proc/pyrad/flow/flow_aux.py

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
from ..io.io_aux import get_datetime, get_file_list, get_scan_list
6363
from ..io.io_aux import get_dataset_fields, get_datatype_fields
6464
from ..io.io_aux import get_new_rainbow_file_name, get_fieldname_pyart
65+
from ..io.io_aux import get_file_list_s3
6566
from ..io.trajectory import Trajectory
6667
from ..io.read_data_other import read_last_state, read_proc_periods
6768

@@ -1067,12 +1068,12 @@ def _create_cfg_dict(cfgfile):
10671068
datatypeID_dict[0] = cfg[key]
10681069
else:
10691070
datatypeID_dict[int(idx) - 1] = cfg[key]
1070-
1071+
10711072
# Assign empty dict to radars where no DataTypeInFiles was assigned
10721073
for i in range(cfg["NumRadars"]):
10731074
if i not in datatypeID_dict:
10741075
datatypeID_dict[i] = {}
1075-
1076+
10761077
cfg["DataTypeIDInFiles"] = datatypeID_dict
10771078

10781079
if "MasterScanTimeTol" not in cfg:
@@ -1295,6 +1296,32 @@ def _create_datacfg_dict(cfg):
12951296
datacfg.update({"MFScale": cfg["MFScale"]})
12961297
datacfg.update({"DataTypeIDInFiles": cfg["DataTypeIDInFiles"]})
12971298

1299+
#s3 buckets
1300+
if "bucket" in cfg:
1301+
try:
1302+
datacfg["s3_key"] = os.environ["S3_IN_KEY"]
1303+
datacfg["s3_secret_key"] = os.environ["S3_IN_SECRET"]
1304+
except KeyError:
1305+
warn(
1306+
'Define environment variables S3_IN_KEY and S3_IN_SECRET'
1307+
' to get input data from S3 buckets.')
1308+
1309+
if "s3path" in cfg:
1310+
datacfg.update({"s3path": cfg["s3path"]})
1311+
else:
1312+
warn('Unable to read data from s3 bucket. Define s3path')
1313+
if "s3_url" in cfg:
1314+
datacfg.update({"s3_url": cfg["s3_url"]})
1315+
else:
1316+
warn('Unable to read data from s3 bucket. Define s3_url')
1317+
1318+
if "rm_s3_file" in cfg:
1319+
datacfg.update({"rm_s3_file": cfg["rm_s3_file"]})
1320+
1321+
if ('s3path' in datacfg and 's3_url' in datacfg
1322+
and 's3_key' in datacfg and 's3_secret_key' in datacfg):
1323+
datacfg.update({"bucket": cfg["bucket"]})
1324+
12981325
# Modify size of radar or radar spectra object
12991326
datacfg.update({"elmin": cfg.get("elmin", None)})
13001327
datacfg.update({"elmax": cfg.get("elmax", None)})
@@ -1731,9 +1758,14 @@ def _get_masterfile_list(datatypesdescr, starttimes, endtimes, datacfg, scan_lis
17311758
)
17321759
return [], None, None
17331760

1734-
masterfilelist = get_file_list(
1735-
masterdatatypedescr, starttimes, endtimes, datacfg, scan=masterscan
1736-
)
1761+
if 'bucket' in datacfg:
1762+
masterfilelist = get_file_list_s3(
1763+
masterdatatypedescr, starttimes, endtimes, datacfg,
1764+
scan=masterscan)
1765+
else:
1766+
masterfilelist = get_file_list(
1767+
masterdatatypedescr, starttimes, endtimes, datacfg,
1768+
scan=masterscan)
17371769

17381770
return masterfilelist, masterdatatypedescr, masterscan
17391771

src/pyrad_proc/pyrad/io/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,9 @@
177177
get_fieldname_icon
178178
get_field_unit
179179
get_file_list
180+
get_file_list_s3
181+
get_scan_files_to_merge
182+
get_scan_files_to_merge_s3
180183
get_rad4alp_dir
181184
get_rad4alp_grid_dir
182185
get_trtfile_list
@@ -281,7 +284,8 @@
281284
from .io_aux import find_hzt_file, _get_datetime, get_rad4alp_prod_fname # noqa
282285
from .io_aux import get_rad4alp_dir, get_rad4alp_grid_dir, find_iso0_file # noqa
283286
from .io_aux import find_iso0_grib_file, find_date_in_file_name # noqa
284-
from .io_aux import get_datatype_skyecho # noqa
287+
from .io_aux import get_datatype_skyecho, get_file_list_s3 # noqa
288+
from .io_aux import get_scan_files_to_merge, get_scan_files_to_merge_s3 # noqa
285289

286290
from .trajectory import Trajectory # noqa
287291

0 commit comments

Comments
 (0)