s3-bucket-stream
Version:
Readable stream of the Body of every object in an S3 bucket.
25 lines (24 loc) • 762 B
text/typescript
import { get } from "./awslib"
import S3Object from "./s3object"
export async function getBatch(Bucket: string, Keys: string[]): Promise<S3Object[]> {
return new Promise((resolve, reject) => {
let result: S3Object[] = []
let i = 0
// console.log(`Getting batch of ${Keys.length} objects from ${Bucket}`)
for (const Key of Keys) {
get(Bucket, Key).then((s3obj: S3Object) => {
result.push(s3obj)
}).catch((err) => {
reject(err)
}).finally(() => {
i++
if (i === Keys.length) {
// console.log(`Got ${result.length}/${Keys.length}`)
resolve(result)
} else if (i > Keys.length) {
reject(new Error("Somehow exceeded keys.length"))
}
})
}
})
}