@whitequark hard to tell without info on how request time is measured, but overall doesn’t look good
Can you trace detailed timings of s3 http query: dns, connect, tls, transfer? On top of that try to poke bucket with s3cmd and measure latencies from single host. Try to fetch same object at least 3 times and watch if latency drops after first GET. If so, it’s most likely related to pull of object from storage to POP in your region. If so, then GET of same object in different region will have same pattern. If latency is not consistent over long run then most likely they don’t have enough capacity to do “free egress” reliably