Skip to content

Commit

Permalink
chore: use paginator to list s3 bucket objects
Browse files Browse the repository at this point in the history
  • Loading branch information
ilfa committed Sep 20, 2024
1 parent 101c073 commit 9926db6
Showing 1 changed file with 15 additions and 24 deletions.
39 changes: 15 additions & 24 deletions e2e/scripts/cleanup.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import {
DeleteBucketCommand,
DeleteObjectsCommand,
ListBucketsCommand,
ListObjectsV2Command,
S3Client
} from "@aws-sdk/client-s3"
paginateListObjectsV2,
S3Client,
} from '@aws-sdk/client-s3'

const lambda = new LambdaClient()
const secretsManager = new SecretsManagerClient()
Expand Down Expand Up @@ -203,28 +203,19 @@ async function* listS3Buckets() {
}

async function emptyS3Bucket(bucketName) {
const listObjectsCommand = new ListObjectsV2Command({ Bucket: bucketName })
const listedObjects = await s3.send(listObjectsCommand)

console.log('listedObjects:', listedObjects)

if (listedObjects.Contents.length === 0) {
return
}

const deleteParams = {
Bucket: bucketName,
Delete: { Objects: listedObjects.Contents.map(({ Key }) => ({ Key })) },
}

console.info(`Removing objects from S3 bucket: ${JSON.stringify(deleteParams)}. `)

const deleteObjectsCommand = new DeleteObjectsCommand(deleteParams)
console.log(deleteObjectsCommand)
// await s3.send(deleteObjectsCommand)
const paginator = paginateListObjectsV2({ client: s3 }, { Bucket: bucketName })
for await (const page of paginator) {
if (page?.KeyCount > 0) {
const deleteParams = {
Bucket: bucketName,
Delete: { Objects: page.Contents.map(({ Key }) => ({ Key })) },
}
console.info(`Removing objects from S3 bucket: ${JSON.stringify(deleteParams)}. `)

if (listedObjects.IsTruncated) {
await emptyS3Bucket(bucketName)
const deleteObjectsCommand = new DeleteObjectsCommand(deleteParams)
console.log(deleteObjectsCommand)
// await s3.send(deleteObjectsCommand)
}
}
}

Expand Down

0 comments on commit 9926db6

Please sign in to comment.