2015-04-22 120 views
1

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

有些人可以告诉我如何使事件在指定存储区的根目录中执行,但在其子文件夹中没有?

回答

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

+1

谢谢。所以我认为缺点是我使用LAMBDA在子文件夹中创建的任何文件都会触发事件,然后最终耗费我的成本? – Leo

+0

@Leo不幸的是。然而,在这些情况下,因为你的函数应该立即退出(而不是做任何调整大小等),所以开单时间应该更短。 –

1

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

Trigger Prefix Filter Example

相关问题