"""Use awswrangler, owsrequest, and pandas libraries to fetch and save data. The required kwargs for each are set explicitly to help illustrate their use. """ import awswrangler from owsrequest import request import pandas def snapshot_as_csv(ows_request_options, awswrangler_options): """Snapshot endpoint data in CSV format.""" data = _ows_request(ows_request_options) df = pandas.DataFrame(data) awswrangler.s3.to_csv( df=df, path=awswrangler_options.pop('path'), **awswrangler_options ) def snapshot_as_parquet(ows_request_options, awswrangler_options): """Snapshot endpoint data in parquet format.""" data = _ows_request(ows_request_options) df = pandas.DataFrame(data) awswrangler.s3.to_parquet( df=df, path=awswrangler_options.pop('path'), dataset=True, partition_cols=awswrangler_options.pop('partition_cols', []), **awswrangler_options ) def _ows_request(ows_request_options): """Return data from an ows endpoint.""" endpoint_data_response = request.process( application=ows_request_options.pop('application'), environment=ows_request_options.pop('environment'), method=ows_request_options.pop('method', 'GET'), service_name=ows_request_options.pop('service_name'), path=ows_request_options.pop('path'), **ows_request_options ) assert endpoint_data_response.status_code == 200, endpoint_data_response.data return endpoint_data_response.json()