<!-- Love localstack? Please consider supporting our collective:
👉  https://opencollective.com/localstack/donate -->

Under utils/common.py, 

TIMESTAMP_FORMAT_MILLIS = '%Y-%m-%dT%H:%M:%S.%fZ'

The %f produces time with microseconds, for example: 2020-03-18T19:43:18.115783Z.


However, when interacting the AWS s3 and sns apis, I receive DateTimes like this:

2020-03-02T22:32:13.240Z
i.e. milliseconds. 

This seems like a simple change to the utils. TIMESTAMP_FORMAT_MILLIS is named as if it should be millis as well. This is seems like a simple change. Is there a reason it should be microseconds?
LOG.debug('Writing %s bytes (total %s) to %s' % (len(chunk), total, path))
                else:
                    LOG.debug('Empty chunk %s (total %s) from %s' % (chunk, total, url))
            f.flush()
            os.fsync(f)
        if os.path.getsize(path) == 0:
            LOG.warning('Zero bytes downloaded from %s, retrying' % url)
            download(url, path, verify_ssl)
            return
        LOG.debug('Done downloading %s, response code %s, total bytes %d' % (url, r.status_code, total))
    finally:
        r.close()
        s.close()
def parse_chunked_data(data):
    """ Parse the body of an HTTP message transmitted with chunked transfer encoding. """
    data = (data or '').strip()
    chunks = []
    while data:
        length = re.match(r'^([0-9a-zA-Z]+)\r\n.*', data)
        if not length:
            break
        length = length.group(1).lower()
        length = int(length, 16)
        data = data.partition('\r\n')[2]
        chunks.append(data[:length])
        data = data[length:].strip()
    return ''.join(chunks)
def first_char_to_lower(s):
    return '%s%s' % (s[0].lower(), s[1:])
def is_number(s):