3

我正在创建一个 lambda,当在某个存储桶中创建对象时应该调用它。我只希望为某些键前缀调用它。我已经看到了在定义存储桶时在存储桶上使用 a 进行设置的示例:NotificationConfiguration

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

但是,我宁愿不修改存储桶的 CloudFormation 定义。使用 SAM,可以在 lambda 上定义 lambda 事件触发器

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

但是有没有办法限制它只针对某些前缀触发?或者,有没有办法将 a 添加NotificationConfiguration到现有的存储桶中?

4

1 回答 1

3

如果我理解正确,您想在 lambda 而不是桶中定义前缀。

我就是这样做的,据我所知,它就像一个魅力

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
于 2018-12-29T15:48:31.857 回答