有没有办法让多个S3存储桶触发Lambda函数?

时间:2019-02-06 15:03:25

标签: amazon-web-services amazon-s3 aws-lambda

我正在尝试创建一个Lambda函数,该函数将由对S3控制台中的任何存储桶进行的任何更改触发。有没有办法将S3中每个存储桶中的所有创建事件都绑定到我的Lambda函数?

似乎在创建Lambda函数时,您只能选择一个S3存储桶。如果不是在Lambda控制台中,是否可以通过编程方式执行此操作?

3 个答案:

答案 0 :(得分:0)

至少有一种方法:您可以为要监视的每个存储桶设置s3事件通知,它们都指向单个SQS队列。

然后,该SQS队列可以成为lambda函数的事件源。

答案 1 :(得分:0)

如果您使用任何aws-sdk上载到s3,则有一种解决方法,方法是设置一个API网关端点,以在成功上载到s3时触发lambda。 将bucket-name和object-key传递给lambda时,您也可以动态指定dest bucket。

这对于嵌套前缀也很有用。 例如 存储桶/用户/头像/user1.jpg 存储桶/用户/头像/缩略图/user1-thumb.jpg

答案 2 :(得分:0)

是的,假设您仅想在几个存储桶中有新创建的对象时触发Lambda,则可以通过AWS Console,cli,boto3和其他SDK进行操作。

如果随着时间的推移创建了新的存储桶,并且您还想将其添加为Lambda的事件源,则可以创建Cloudtrail API事件源,以触发另一个Lambda以编程方式将这些新存储桶作为原始Lambda的事件源