async function emptyS3Directory(bucket, dir) {
const listParams = {
Bucket: bucket,
Prefix: dir
};
const listedObjects = await s3.listObjectsV2(listParams).promise();
if (listedObjects.Contents.length === 0) return;
const deleteParams = {
Bucket: bucket,
Delete: { Objects: [] }
};
listedObjects.Contents.forEach(({ Key }) => {
deleteParams.Delete.Objects.push({ Key });
});
await s3.deleteObjects(deleteParams).promise();
if (listedObjects.IsTruncated) await emptyS3Directory(bucket, dir);
}
// 调用它:
await emptyS3Directory(process.env.S3_BUCKET, 'images/')
serverless需要添加的权限:
provider:
iamRoleStatements:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
- s3:DeleteObject
- s3:DeleteObjects
- s3:ListObjectsV2
- s3:ListBucket #(这个必须填上)
Resource:
- "arn:aws:s3:::{self:custom.bucketLottery}/*"
- "arn:aws:s3:::{self:custom.bucketLottery}" #(这个必须加上)
参考:
https://www.stacknoob.com/s/njrnFdp4MGtKpP3fGE3gMD