Search code examples
amazon-web-servicesamazon-s3amazon-snsserverless-framework

One Bucket - Multiple Topics Amazon S3, SNS


I am trying to two SNS topics for a single bucket event. At present, I have my bucket configured in this manner:

TranscribedBucket:
  Type: AWS::S3::Bucket
  DeletionPolicy: Retain
  Properties:
    NotificationConfiguration:
      TopicConfigurations:
        - Event: s3:ObjectCreated:*
          Topic:
            Ref: Transformer
          Filter:
            S3Key:
              Rules:
                - Name: prefix
                  Value: "transcribed-"
  BucketName: ${self:provider.transcribedBucket}

The topic Transfomer is being listened by two subscriber lambdas and they actually output in the same bucket under different folders (say, folder1/file1 by subscriberLambda1 and folder2/file2 by subscriberLambda2). Once that is done, I have one more lambda which needs to actually consume an SNS event whenever the file gets landed in that folder.

Since - Event: s3:ObjectCreated:* cannot be duplicated, I can't actually create one more Topic for the same bucket. How can I go forward with this?


Solution

  • You should be able to do something like:

    TranscribedBucket:
      Type: AWS::S3::Bucket
      DeletionPolicy: Retain
      Properties:
        NotificationConfiguration:
          TopicConfigurations:
            - Event: s3:ObjectCreated:*
              Topic:
                Ref: Transformer
              Filter:
                S3Key:
                  Rules:
                    - Name: prefix
                      Value: "folder1/"
            - Event: s3:ObjectCreated:*
              Topic:
                Ref: Bumblebee
              Filter:
                S3Key:
                  Rules:
                    - Name: prefix
                      Value: "folder2/"
      BucketName: ${self:provider.transcribedBucket}