amazon-s3 - 无服务器框架 - S3 上传 lambda 触发器
问题描述
我想根据上传文件的文件夹在同一个bucket上触发不同的lambda。基本上,当用户将文件上传到“user/some_id/bills”时,我想触发 lambda 1;当用户将文件上传到“user/some_id/docs”时,我想触发 lambda 2;
我尝试了下面的配置,但没有奏效......
insertUploadBill:
handler: resources/insertUploadBill.main
events:
- s3:
bucket: ${self:custom.settings.BUCKET}
event: s3:ObjectCreated:*
rules:
- prefix: user/*/bills/
insertUploadDocs:
handler: resources/insertUploadDoc.main
events:
- s3:
bucket: ${self:custom.settings.BUCKET}
event: s3:ObjectCreated:*
rules:
- prefix: user/*/docs/
解决方案
如果您查看文档 https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-filtering
规则中的通配符(前缀/后缀)不能使用。
- 因此,您可以更改 S3 对象键以匹配类似这样的内容
user/images/[user-id]
- 或者您可以创建一个单独的 lambda 以在所有
s3:ObjectCreated:*
事件上调用,然后使用此 lambda 匹配键并调用您当前的 lambda。resources/insertUploadBill.main
和resources/insertUploadDoc.main
推荐阅读
- spring-boot - 我应该使用哪种类型的 OAuth 授权流程?
- ruby-on-rails - 我想向 Salesforce 发送正确的参数,以便在 Ruby 上使用 JWT 进行身份验证
- hash - 如何确保哈希值不会因中间人攻击而改变?
- algorithm - 裁剪以排除参差不齐的边缘上的任何透明度
- windows - 无论如何将Firefox私有模式设置为Windows默认浏览器?
- javascript - console.log 和 document.getElementById() 的区别
- node.js - Mongo每天汇总$group?
- simple-html-dom - 用 div 包裹内部内容不保存
- c# - DataContractSerializer readobject - 根级别的数据无效。第 1 行,位置 1
- python - 如何在我自己的网站上集成 BinderHub?