s3-bucket-stream
Version:
Readable stream of the Body of every object in an S3 bucket.
59 lines (55 loc) • 1.49 kB
text/typescript
import AWS from "aws-sdk"
import S3Object from "./s3object"
const s3 = new AWS.S3()
export async function get(Bucket: string, Key: string): Promise<S3Object> {
return new Promise((resolve, reject) => {
let params = {
Bucket,
Key
}
s3.getObject(params, (err, data) => {
if (err) reject(err)
else resolve({ Body: data["Body"]!.toString(), Key, Bucket })
})
})
}
export async function put(Bucket: string, Key: string, Body: string): Promise<void> {
return new Promise((resolve, reject) => {
let params = {
Bucket,
Key,
Body
}
s3.putObject(params, (err, _) => {
if (err) reject(err)
else resolve()
})
})
}
export async function list(Bucket: string, StartAfter: string|undefined = undefined, MaxKeys: number = 1000): Promise<string[]> {
return new Promise((resolve, reject) => {
let params: AWS.S3.ListObjectsV2Request = {
Bucket,
MaxKeys
}
if (StartAfter !== undefined && StartAfter !== null) {
params.StartAfter = StartAfter
}
// console.log(`Listing ${MaxKeys} from ${Bucket}`)
s3.listObjectsV2(params, (err, data) => {
if (err) reject(err)
else {
let contents = data["Contents"]
if (contents !== undefined) {
let Keys: string[] = []
contents.forEach((c) => {
if (c["Key"]) {
Keys.push(c["Key"])
}
})
resolve(Keys)
}
}
})
})
}