无服务器框架 - 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

规则中的通配符(前缀/后缀)不能使用。

  1. 因此,您可以更改 S3 对象键以匹配类似这样的内容 user/images/[user-id]
  2. 或者您可以制作一个单独的 lambda 以在所有 s3:ObjectCreated:* 事件上调用,然后使用此 lambda 匹配密钥并调用您当前的 lambda。 resources/insertUploadBill.mainresources/insertUploadDoc.main