The Bundle API lets you fetch multiple objects from a bucket as a streaming tar
Solution
So a bundle request is billed as N Class-B (read) requests — one per object actually streamed — not as a single request. So a bundle of 500 keys costs the same in request charges as 500 individual GetObject calls