Amazon S3 이벤트 알림이 Lambda 함수를 트리거하지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 2월 7일

AWS Lambda 함수를 트리거하도록 Amazon Simple Storage Service(Amazon S3) 이벤트 알림을 구성했습니다. 이벤트가 발생할 때 함수가 예상대로 트리거되지 않는 이유는 무엇입니까?

간략한 설명

다음 사항이 모두 올바르게 구성되었는지 확인합니다.

해결 방법

Amazon S3 이벤트 유형

Amazon S3 이벤트 알림을 구성할 때 지원되는 Amazon S3 이벤트 유형 (PUT, POST, COPY, CompleteMultipartUpload 등)에서 Amazon S3가 알림을 전송하도록 지정할 수 있습니다. 지정하지 않은 이벤트 유형이 S3 버킷에 발생하면 Amazon S3에서 알림을 전송하지 않으며 Lambda 함수를 트리거하지 않습니다.

예를 들어 S3 버킷에 객체를 COPY하려고 하지만 이벤트 알림이 POST 이벤트에 대해 구성된 경우 COPY 이벤트는 함수를 트리거하지 않습니다.

객체 키 이름 필터

객체 키 이름 필터링을 사용하도록 Amazon S3 이벤트 알림을 구성할 수 있습니다. 구성된 경우, Amazon S3는 특정 키 이름 접두사 또는 접미사가 있는 객체에 대해서만 알림을 게시하고 Lambda 함수를 트리거합니다.

접두사 또는 접미사 값에 이러한 특수 문자를 사용하는 경우 URL 인코딩(퍼센트 인코딩) 형식으로 입력해야 합니다.

  • ASCII 문자 범위 00-1F 16진수(10진수 0~31) 및 7F(10진수 127)
  • 달러("$")
  • 앰퍼샌드("&")
  • 더하기 기호("+")
  • 쉼표(",")
  • 콜론(":")
  • 세미콜론(;)
  • 등호("=")
  • 물음표("?")
  • At 기호("@")
  • 공백(" ")

예를 들어 접두사 값을 “test = abc/"로 정의하려면 해당 값에 "test%3Dabc/”를 입력합니다.

참고: 와일드카드 문자("*")는 모든 문자를 나타내는 접두사 또는 접미사로 필터에 사용할 수 없습니다.

피해야 할 문자 목록을 포함한 자세한 내용은 객체 키 명명 지침을 참조하십시오.

Lambda 권한

Lambda 함수의 리소스 기반 정책은 특정 Amazon S3 버킷이 함수를 호출하도록 허용해야 합니다. Amazon S3 콘솔을 사용하여 새 이벤트 알림을 추가하면 이러한 권한이 해당 정책에 자동으로 추가됩니다.

참고: 콘솔을 사용하는 것과 달리 AWS 명령줄 인터페이스(AWS CLI)를 통해 put-bucket-notification-configuration을 사용하여 새 이벤트 알림을 추가해도 Lambda 함수 정책이 업데이트되지 않습니다.

하지만 어느 시점에 권한을 제거하더라도 Amazon S3 이벤트 알림이 나중에 예상대로 함수를 호출하지 못할 수 있습니다.

정책을 확인하여 필요한 권한이 있는지 확인하고 필요한 경우 추가합니다. 필요한 권한을 추가하는 방법은 Amazon S3 이벤트 알림을 생성하여 Lambda 함수를 트리거할 때 "Unable to validate the following destination configurations" 오류가 표시되는 이유는 무엇입니까?를 참조하십시오.

Lambda 동시성

Lambda 함수는 수신되는 Amazon S3 이벤트 알림의 동시 실행을 처리하도록 구성해야 합니다. 요청이 함수가 조정할 수 있는 것보다 더 빨리 도착하거나 함수가 최대 동시성에 도달하는 경우 Lambda는 자동으로 재시도하기 전에 이러한 요청을 조절하고 다시 중지합니다. 자세한 내용은 비동기식 호출AWS Lambda 함수 조정을 참조하십시오.