Javascript 如果图像从S3 bucket根目录中删除,如何从子目录中删除相应的缩略图?

Javascript 如果图像从S3 bucket根目录中删除,如何从子目录中删除相应的缩略图?,javascript,node.js,amazon-web-services,amazon-s3,aws-lambda,Javascript,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,我将AWS S3服务用于媒体目的,也将AWS Lamda服务用于拇指相关图像 面临以下问题:如果我删除主目录中的介质,子目录中仍将存在缩略图(由Lambda生成) 例如: 如果我从Node.js代码中删除“1513928090496_juCQtDAt6ylr.jpg”文件,那么我还需要从“100x100”、“1920x720”和“300x300”目录中删除相同的文件。(它们还包含相同的文件“1513928090496_juCQtDAt6ylr.jpg”) 更多详情请参考上传的图片 最简单的方法是

我将AWS S3服务用于媒体目的,也将AWS Lamda服务用于拇指相关图像

面临以下问题:如果我删除主目录中的介质,子目录中仍将存在缩略图(由Lambda生成)

例如: 如果我从Node.js代码中删除“1513928090496_juCQtDAt6ylr.jpg”文件,那么我还需要从“100x100”、“1920x720”和“300x300”目录中删除相同的文件。(它们还包含相同的文件“1513928090496_juCQtDAt6ylr.jpg”)


更多详情请参考上传的图片

最简单的方法是使用另一个Lambda函数。 当对象从bucket中删除时,可以触发它的执行

然后,该函数将分析删除的对象是否位于根目录中,如果是,则从子文件夹中删除缩略图

以下是您可以使用的功能:

const AWS=require(“AWS sdk”);
const s3=新的AWS.s3();
const thumbnailFolders=[“100x100”、“1920x720”、“300x300”];
exports.handler=函数(事件、上下文、回调){
const bucketName=event.Records[0].s3.bucket.name;
const deletedFileKey=event.Records[0].s3.object.key;
//如果没有正向斜杠,则文件位于根文件夹中。
const wasInRootDirectory=!deletedFileKey.includes(“/”);
如果(!wasInRootDirectory){
//如果不在根文件夹中,则忽略它。
返回;
}
const thumbnailsToDelete=thumbnailFolders.map(f=>{
返回{Key:`${f}/${deletedFileKey}`};
});
常量参数={
Bucket:bucketName,
删除:{
对象:thumbnailsToDelete
}
};
s3.删除对象(参数,(错误,数据)=>{
如果(错误){
日志(err,err.stack);
回调(err);
返回;
}
//删除成功
回调();
});
};请检查,可能会有帮助。