【发布时间】:2021-10-28 00:15:28
【问题描述】:
我正在为单个存储桶事件尝试两个 SNS 主题。目前,我的存储桶是这样配置的:
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}
主题Transfomer 正在被两个订阅者 lambda 监听,它们实际上在不同文件夹下的同一存储桶中输出(例如,订阅者Lambda1 的文件夹1/file1 和订阅者Lambda2 的文件夹2/file2)。完成后,我还有一个 lambda,只要文件进入该文件夹,它就需要实际使用 SNS 事件。
由于- Event: s3:ObjectCreated:* 无法复制,我实际上无法为同一个存储桶再创建一个Topic。我该怎么做?
【问题讨论】:
-
您确定不能添加两个订阅者吗?
TopicConfigurations是一个数组,你应该可以添加另一个项目。 -
同意。他们需要不同的前缀。
-
@Alex 我无法添加相同的
s3:ObjectCreated:*。这将导致冲突——Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type.。我只能添加其他事件。 -
@JohnRotenstein 如何添加两个不同的前缀?即使我这样做了,我怎样才能将它们连接到单独的 lambda 函数?
-
您的
Name: prefix部分说“任何以transcribed-开头的键都应触发此事件。您可以创建第二个TopicConfiguration,只要它具有不同的前缀(例如不是transcribed-). 前缀通常是文件夹的名称,但可以包含文件名(因为 Key 实际上包含两者)。
标签: amazon-web-services amazon-s3 amazon-sns serverless-framework