S3桶文件夹下所有对象删除后触发器是否生效及空文件夹保留问题
S3 相关问题解答
1. 重新上传文件后Lambda触发器是否正常触发
可以正常触发。
S3本身是平面对象存储服务,不存在真实的文件夹层级,控制台展示的「文件夹」本质是对象Key的公共前缀的可视化呈现。你配置的Lambda S3触发器匹配的是上传对象的Key规则(一般为前缀ABC/ + 后缀sample-file.csv),和是否存在对应的可视化空文件夹没有关联。只要后续上传的对象Key为ABC/sample-file.csv,完全符合触发器的匹配规则,就会正常触发Lambda运行。
2. 保留空ABC文件夹的方法
可以通过创建0字节的前缀占位对象实现空文件夹保留,S3控制台创建文件夹的本质也是生成这类对象,具体操作有两种:
- 控制台操作:直接进入对应存储桶,点击「创建文件夹」,输入名称
ABC后保存即可,系统会自动生成Key为ABC/的0字节对象 - 代码操作:通过boto3主动创建占位对象,代码如下:
boto3_session = boto3.client('s3') boto3_session.put_object(Bucket=Bucketname, Key='ABC/', ContentLength=0)
创建完成后,只要你不删除这个ABC/占位对象,即使文件夹下所有的业务文件都被清理,控制台也会一直显示空的ABC文件夹,不会被自动移除。你现有的删除逻辑只针对ABC/sample-file.csv,不会影响该占位对象,无需修改原有删除代码。
内容的提问来源于stack exchange,提问作者Tarun
相关产品推荐
相关产品推荐

