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