2024-05-29 11:51:04 -04:00

58 lines
1.4 KiB
JavaScript

'use strict'
const awsRequest = require('@serverless/test/aws-request')
const S3Service = require('aws-sdk').S3
async function createBucket(bucket) {
return awsRequest(S3Service, 'createBucket', { Bucket: bucket })
}
async function createAndRemoveInBucket(bucket, opts = {}) {
const prefix = opts.prefix || ''
const suffix = opts.suffix || ''
const fileName = opts.fileName || 'object'
const params = {
Bucket: bucket,
Key: `${prefix}${fileName}${suffix}`,
Body: 'hello world',
}
return awsRequest(S3Service, 'putObject', params).then(() => {
delete params.Body
return awsRequest(S3Service, 'deleteObject', params)
})
}
async function emptyBucket(bucket) {
return awsRequest(S3Service, 'listObjects', { Bucket: bucket }).then(
(data) => {
const items = data.Contents
const numItems = items.length
if (numItems) {
const keys = items.map((item) => Object.assign({}, { Key: item.Key }))
return awsRequest(S3Service, 'deleteObjects', {
Bucket: bucket,
Delete: {
Objects: keys,
},
})
}
return null
},
)
}
async function deleteBucket(bucket) {
return emptyBucket(bucket).then(() =>
awsRequest(S3Service, 'deleteBucket', { Bucket: bucket }),
)
}
module.exports = {
createBucket,
createAndRemoveInBucket,
emptyBucket,
deleteBucket,
}