Serverless Framework - лямбда-триггер загрузки S3 - PullRequest
0 голосов
/ 05 апреля 2020

Я бы хотел запускать разные лямбды в одной корзине в соответствии с папкой, в которую загружен файл. По сути, когда пользователь загружает файл в «user / some_id / bills», я хочу вызвать лямбду 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/

1 Ответ

0 голосов
/ 06 апреля 2020

, если вы посмотрите на документы https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification - способ фильтрации

Символы подстановки в правилах (префикс / суффикс) не могут быть использованы.

  1. Таким образом, вы можете либо изменить ключ объекта S3, чтобы он соответствовал чему-то вроде этого user/images/[user-id]
  2. Или вы можете создать отдельную лямбду, которая будет вызываться для всех событий s3:ObjectCreated:* и затем используйте эту лямбду, чтобы сопоставить ключ и вызвать ваши текущие лямбды. resources/insertUploadBill.main и resources/insertUploadDoc.main
...