我正在使用Lambda为S3编写自动图像大小调整工具。我想在PUT操作时在存储桶的子文件夹中创建缩略图,但如果我将文件放在存储桶中的任何位置,则会触发事件。
有些人可以告诉我如何在指定存储桶根目录中的操作中激活事件但在子文件夹中没有吗?
答案 0 :(得分:2)
使用前缀过滤器。例如,使用前缀过滤器uploads/
配置触发器。它会在创建uploads/thumb1.jpg
时触发,但在创建any_other_prefix/thumb1.jpg
时不会触发。然后,只需确保在您输入缩略图时使用密钥中的前缀。
答案 1 :(得分:0)
看起来您不能将S3通知配置为仅在某些路径上触发,因此最好的选择是在Lambda函数中实现此逻辑:
var key = event.Records[0].s3.object.key;
if (key.indexOf('/') === -1) {
// No slash in key name, must be in root of bucket, do stuff here
}
这样可行,因为如果对象位于子文件夹中且不根,则密钥将have a slash in the name。