Запуск лямбда при создании объекта с определенным префиксом - PullRequest
0 голосов
/ 05 декабря 2018

Я создаю лямбду, которая должна вызываться, когда объекты создаются в определенном сегменте.Я хочу, чтобы он вызывался только для определенных ключевых префиксов.Я видел примеры настройки этого с использованием NotificationConfiguration на корзине при определении корзины:

NotificationConfiguration:
  LambdaConfigurations:
    - Function: !Ref SomeLambdaArn
      Event: "s3:ObjectCreated:*"
      Filter:
        S3Key:
          Rules:
            - Name: prefix
              Value: zip

Однако я бы не стал изменять определение CloudFormation корзины.С помощью SAM можно задать лямбда-триггеры событий для лямбды :

  Events:
    BucketEvent1:
      Type: S3
      Properties:
        Bucket: Ref: Bucket1
        Events:
          - 's3:ObjectCreated:*'

Но есть ли способ ограничить его запуск только для определенных префиксов?В качестве альтернативы, есть ли способ добавить NotificationConfiguration в существующее ведро?

1 Ответ

0 голосов
/ 29 декабря 2018

Если я вас правильно понимаю, вы хотите определить префикс в лямбде, а не в ведре.

Вот как я это сделал, насколько я могу судить, работает как шарм

Resources:
  ConvertToParquet:
  Type: AWS::Serverless::Function 
  Properties:
  CodeUri: handler/convert_to_parquet
  MemorySize: 3008
  Timeout: 90
  Policies: 
    - AmazonS3FullAccess
  Events:
    SummaryCSVCreated:
      Type: S3
      Properties:
        Bucket: !Ref UploadBucket
        Events: s3:ObjectCreated:*
        Filter: 
          S3Key:
            Rules:
              - Name: suffix
                Value: '.txt'

  UploadBucket:
    Type: AWS::S3::Bucket
...