mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
58 lines
1.4 KiB
JavaScript
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,
|
|
}
|