2

我正在使用 Lambda 为 S3 编写一个自动图像大小调整工具。我想在执行 PUT 操作时在存储桶的子文件夹中创建缩略图,但是如果我将文件放在存储桶中的任何位置,则会触发事件。

有人可以告诉我如何仅在指定存储桶的根目录中的操作而不是在其子文件夹中的操作使事件着火吗?

4

2 回答 2

7

使用前缀过滤器。例如,使用前缀过滤器配置触发器uploads/。它会在uploads/thumb1.jpg创建时触发,但不会在any_other_prefix/thumb1.jpg创建时触发。然后,只需确保在放置缩略图时在密钥中使用前缀。

触发前缀过滤器示例

于 2017-05-09T21:04:04.887 回答
2

您似乎无法将 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
}

这将起作用,因为如果对象位于子文件夹而不是根目录中,则键的名称中将带有斜杠

于 2015-04-26T19:21:46.130 回答