在S3事件通知前缀上使用通配符

时间:2015-10-13 16:22:48

标签: amazon-s3

我有一个Lambda函数,可以为每个上传到我的存储桶的图像创建缩略图,然后将Thumbnail放在另一个存储桶中。当我上传用户图片(个人资料图片)时,我会将用户 ID 名称作为密钥的一部分:

System-images/users/250/john_doe.jpg

有没有办法在prefix路径中使用通配符?这是我到目前为止,但它不起作用

S3 bucket properties

2 个答案:

答案 0 :(得分:10)

不,你不能 - 这是一个文字的前缀

在您的示例中,您可以使用这些前缀中的任何一个,具体取决于存储桶中的其他内容(如果存在共享您不想匹配的公共前缀的内容):

System-images/
System-images/users/

答案 1 :(得分:2)

仍然不支持Lambda的前缀/后缀过滤器中的通配符,同时您可以使用它们进行部分过滤,然后在Lambda函数中添加正则表达式完成过滤器。

获取源密钥:

var srcKey = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " "));

检查它是否在用户文件夹中:

if (srcKey.indexOf('/users/') === -1) {
    callback('Not inside users folder!');
    return;
}