我尝试创建 Amazon Simple Storage Service (Amazon S3) 存储桶事件通知来触发我的 AWS Lambda 函数,但收到了一个错误。
当通知的事件信息及其前缀或后缀与 S3 存储桶的通知配置重叠时,将发生“Configuration is ambiguously defined”(配置定义不明确)错误。
要解决此问题,请执行以下操作之一:
**注意:**Amazon S3 事件通知配置允许具有非重叠前缀或后缀的重叠事件。这些配置还允许具有重叠前缀或后缀的非重叠事件。
有关更多信息,请参阅使用对象键名筛选配置事件通知。
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要删除重叠的事件通知,请使用 Amazon S3 控制台或 AWS CLI。
**注意:**当您删除 Lambda 函数触发器时,不会自动删除关联的 S3 事件通知。在创建没有后缀限制的新触发器之前,您还必须删除 Amazon S3 中的通知。
Amazon S3 控制台
完成以下步骤:
AWS CLI
使用 AWS CLI 更新您的 S3 存储桶上的通知配置 JSON 文件。要获取 S3 存储桶上的所有事件通知的列表,请运行 AWS CLI 命令 get-bucket-notification-configuration。要删除所有 S3 事件通知,请运行 AWS CLI 命令 put-bucket-notification-configuration:
aws s3api put-bucket-notification-configuration --bucket=your-bucket-name --notification-configuration="{}"
**注意:**请将 your-bucket-name 替换为您的存储桶名称。
删除重叠的事件通知后,您可以运行 AWS CLI 命令 put-bucket-notification-configuration 来添加新通知。
如果您无法重新配置您的 S3 事件通知来避免重叠,请重新设计您的架构来解决此问题。
例如,配置事件通知以触发 Lambda 函数,以便基于 S3 事件触发其他 Lambda 函数。或者,配置事件通知以将事件发布到 Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列。
**注意:**确保主题或队列将事件推送到多个已订阅的 Lambda 函数。使用逻辑设计订阅的函数,以决定是否处理这些函数收到的事件。有关详细信息,请参阅 Fanout S3 event notifications to multiple endpoints。
您还可以在 AWS CloudTrail 上启用 Amazon S3 操作的对象级日志记录。然后,使用 Amazon EventBridge 规则,根据 Amazon S3 事件模式触发您的 Lambda 函数。有关详细信息,请参阅教程: 使用 EventBridge 记录 Amazon S3 对象级操作。
对于更复杂的架构和流程,请使用 AWS Step Functions 状态机来设计和管理您的工作流。有关详细信息,请参阅 AWS Step Functions 应用场景和 Step Functions 学习教程。
为什么我在使用 Amazon S3 事件通知时会收到“Unable to validate the following destination configurations”(无法验证以下目标配置)错误?
如何对 Amazon S3 事件通知未调用我的 Lambda 函数问题进行故障排除?
使用 Lambda 处理 Amazon S3 事件通知
教程: Using an Amazon S3 trigger to invoke a Lambda function