Lambda 함수를 트리거하기 위해 Amazon S3 이벤트 알림을 생성할 때 "Configuration is ambiguously defined" 오류가 발생하는 이유는 무엇입니까?
최종 업데이트 날짜: 2021년 1월 11일
AWS Lambda 함수를 트리거하기 위해 Amazon Simple Storage Service(Amazon S3) 버킷 이벤트 알림을 생성하려고 할 때 "Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type." 오류가 발생하는 이유는 무엇입니까?
간략한 설명
Configuration is ambiguously defined 오류는 알림의 이벤트 정보와 접두사 또는 접미사가 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 이벤트 알림을 재구성할 수 없는 경우 아키텍처를 재설계하여 문제를 해결합니다. 예를 들어 다음과 같습니다.
- S3 이벤트를 기반으로 다른 Lambda 함수를 트리거하는 라우팅 Lambda 함수를 트리거하도록 이벤트 알림을 구성합니다.
- Amazon Simple Notification Service(Amazon SNS) 주제 또는 Amazon Simple Queue Service(Amazon SQS) 대기열에 이벤트를 게시하도록 이벤트 알림을 구성합니다.
참고: 주제 또는 대기열이 구독 중인 여러 Lambda 함수에 이벤트를 푸시해야 합니다. 수신 이벤트를 처리할지 여부를 결정하는 로직을 사용하여 구독 중인 함수를 설계합니다. 자세한 내용은 S3 이벤트 알림을 여러 엔드포인트로 팬아웃을 참조하세요. - AWS CloudTrail에 대한 Amazon S3 작업의 객체 수준 로깅을 활성화한 다음, Amazon CloudWatch Events 규칙을 사용하여 Amazon S3 이벤트 패턴에 따라 Lambda 함수를 트리거합니다. 자세한 내용은 자습서: CloudWatch Events를 사용하여 Amazon S3 객체 수준 작업 로깅을 참조하세요.
팁: 보다 복잡한 아키텍처 및 프로세스의 경우 AWS Step Functions 상태 시스템을 사용하여 워크플로를 설계하고 관리합니다. 자세한 내용은 AWS Step Functions 사용 사례 및 자습서를 참조하세요.