我正在使用aws-sdk-ruby gem。使用S3,CloudFront和Lambda。
在S3中,我上传了一个文件到根目录,例如。tshirt1.jpg。当我的Lambda函数运行时,它会创建不同大小的文件,并将它们放入如下结构中:
100x100/
--> webp/tshirt1.jpg
--> jpg/tshirt1.jpg
500x500
-->webp/tshirt1.jpg
-->jpg/tshirt1.jpg
tshirt1.jpg其中100x100是新的图像大小,下一个文件夹是类型。
我知道我想要删除的文件名,但是,有没有一种方法可以找到任何文件夹中具有该名称的存储桶中的所有文件并将其删除。
def delete_resource
s3 = Aws::S3::Resource.new
bucket = s3.bucket(settings.aws.bucket)
bucket.delete_objects({
delete:{
objects: [
{key: 'tshirt1.jpg'}
]
}
})
end如果可能的话,我想做点什么,比如{key: '*/*/tshirt1.jpg'}
这是可能的,还是我必须传入所有可能的文件夹路径?
发布于 2018-12-05 19:38:29
@Greyhounddad S3不维护文件层次结构,它将所有内容都视为对象,然而,获取对象的唯一方法是通过其密钥,
如果您想要自动化删除其他目录上的文件的过程,请尝试使用aws lambda,您可以执行lambda函数从您的存储桶中删除文件,lambda将从其他存储桶或您的case目录中删除具有相同名称的其他文件。
如果有帮助,请告诉我
发布于 2018-12-06 00:29:04
没有内置的功能可以做到这一点。
您需要编写一个专门执行此操作的程序。
https://stackoverflow.com/questions/53631016
复制相似问题