无服务器框架 - S3 上传 lambda 触发器
Serverless Framework - S3 upload lambda trigger
我想根据上传文件的文件夹在同一个存储桶上触发不同的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
我想根据上传文件的文件夹在同一个存储桶上触发不同的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