def select(log_dir, filter_assumed_role_arn, use_cloudtrail_api, from_s, to_s): """Finds all CloudTrail records matching the given filters and prints them.""" log_dir = os.path.expanduser(log_dir) from_date = time_utils.parse_human_readable_time(from_s) to_date = time_utils.parse_human_readable_time(to_s) if use_cloudtrail_api: records = load_from_api(from_date, to_date) else: records = load_from_dir(log_dir, from_date, to_date) filtered_records = filter_records(records, filter_assumed_role_arn, from_date, to_date) filtered_records_as_json = [record.raw_source for record in filtered_records] click.echo(json.dumps({"Records": filtered_records_as_json}))
def test_should_filter_for_event_time(): records = [ Record("autoscaling.amazonaws.com", "DescribeLaunchConfigurations", event_time=datetime.datetime(2017, 1, 1)), Record("sts.amazonaws.com", "AssumeRole", event_time=datetime.datetime(2017, 6, 6)) ] assert filter_records(records, from_date=datetime.datetime(2017, 1, 1), to_date=datetime.datetime(2017, 3, 1)) == \ [ Record("autoscaling.amazonaws.com", "DescribeLaunchConfigurations", event_time=datetime.datetime(2017, 1, 1)), ]
def test_should_warn_if_records_passed_but_filtered_away(caplog): records = [ Record("autoscaling.amazonaws.com", "DescribeLaunchConfigurations", event_time=datetime.datetime(2017, 1, 1)), Record("sts.amazonaws.com", "AssumeRole", event_time=datetime.datetime(2017, 6, 6)) ] assert filter_records(records, from_date=datetime.datetime(2010, 1, 1), to_date=datetime.datetime(2010, 1, 2)) == [] assert caplog.record_tuples == [ ('root', logging.WARNING, cloudtrail.ALL_RECORDS_FILTERED), ]