def METHOD_NAME(self, ips, start, end):
    results = {}
    if not self.ipdb:
        return results
    for ip in ips:
        # TODO: see if we need to expand the time window
        # the use of config for ip info creates some lag
        # on capture, and also some potential gaps for
        # short lived resources.
        self.ipdb_cursor.execute(
            '''select * from enis
               where ip_address = ?
                 and start < ?
                 and (end > ? or end is null)''',
            (ip, end.strftime('%Y-%m-%dT%H:%M'),
             start.strftime('%Y-%m-%dT%H:%M')))
        info = list(self.ipdb_cursor)
        # TODO: assert on number of records found
        if info:
            eni_info = info.pop()
        # TODO: this a bit speculative wrt to ip usage
        # specific to an enterprise network setup, where in
        # non resolved ips are typically aws services via
        # classic vpc endpoints using public ips. Might need
        # to revisit. also potentially an option on ip string
        # prefix match as a sanity base.
        elif not info:
            n = ipaddress.IPv4Address(str(ip))
            found = False
            for service, cidr_set in self.aws_cidrs.items():
                for cidr in cidr_set:
                    if n in cidr:
                        results[ip] = {'app': 'aws s3', 'env': 'aws s3'}
                        found = True
                        break
                    if found:
                        break
                if found:
                    break
            continue
        results[ip] = self.resolve_resource(eni_info)
    return results