上次更新时间:2021 年 1 月 11 日
我尝试创建 Amazon Simple Storage Service (Amazon S3) 存储桶事件通知来触发我的 AWS Lambda 函数。为什么会收到错误“配置的定义模棱两可。如果相同事件类型的前缀重叠,则两个规则不能具有重叠的前缀。”?
简短描述当通知的事件信息及其前缀或后缀与 S3 存储桶的通知配置重叠时,将发生配置的定义模棱两可错误。
当您执行以下操作之一时,可能会发生错误:
重新创建您最近删除的 S3 事件通知。 使用重叠的前缀或后缀为多个重叠事件创建 S3 事件通知。注意:Amazon S3 事件通知配置允许具有非重叠前缀或后缀的重叠事件。这些配置还允许具有重叠前缀或后缀的非重叠事件。
有关更多信息和示例,请参阅如何启用事件通知和 通过对象键名称筛选配置通知。
解决方法注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
执行以下任意一项操作:
通过运行 AWS CLI 命令 get-bucket-notification-configuration 在您的 S3 存储桶上查看当前通知配置。 在 Amazon S3 控制台中查看您的现有通知事件。有关更多信息,请参阅启用和配置事件通知。然后,请执行以下操作之一:
删除重叠的事件在 Amazon S3 控制台中,删除与您尝试创建的新事件通知重叠的现有事件通知。
-或者-
通过运行 AWS CLI 命令 put-bucket-notification-configuration 更新您的 S3 存储桶上的通知配置 JSON 文件。
重新配置新通知更改您的 S3 存储桶命名空间的对象键命名方式,以允许具有非重叠前缀的多个重叠事件。
例如,要指定已上传图像等重叠事件对象,请使用不同的 S3 存储桶文件夹(前缀),具体取决于图像文件类型(后缀):
S3://mybucket/uploadedJPEG S3://mybucket/uploadedGIF 针对您的使用案例重新设计如果您无法重新配置您的 S3 事件通知来避免重叠,请尝试重新设计您的架构来进行解决。例如:
配置事件通知以触发路由 Lambda 函数,从而基于 S3 事件来触发其他 Lambda 函数。 配置事件通知以将事件发布到 Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列。注意:确保主题或队列将事件推送到多个订阅的 Lambda 函数。使用逻辑设计订阅的函数,以决定是否处理他们收到的事件。有关更多信息,请参阅将 S3 事件通知群发至多个终端节点。 启用 Amazon S3 操作至 AWS CloudTrail 的对象级记录,然后使用 Amazon CloudWatch Events 规则基于 Amazon S3 事件模式来触发 Lambda 函数。有关更多信息,请参阅教程:使用 CloudWatch Events 记录 Amazon S3 对象级操作。
提示:对于更加复杂的架构和过程,请使用 AWS Step Functions 状态机设计并管理您的工作流。有关更多信息,请参阅 AWS Step Functions 使用案例和教程。