Запуск лямбда при создании объекта с определенным префиксом

Я создаю лямбду, которая должна вызываться при создании объектов в определенном сегменте. Я хочу, чтобы он вызывался только для определенных ключевых префиксов. Я видел примеры настройки этого с помощью 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 ответ

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

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

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
Другие вопросы по тегам