이벤트 알림 유형 및 대상

이벤트 알림 유형 및 대상

Amazon S3는 여러 이벤트 알림 유형과 알림이 게시될 수 있는 대상을 지원해요. 이벤트 알림을 구성할 때 이벤트 유형과 대상을 지정할 수 있어요. 각 이벤트 알림에는 대상 하나만 지정할 수 있어요. Amazon S3 이벤트 알림은 각 알림 메시지에 대해 이벤트 항목 하나를 보내요.

출처: Event notification types and destinations

본문

지원되는 이벤트 대상

Amazon S3는 이벤트 알림 메시지를 다음 대상으로 보낼 수 있어요.

  • Amazon SNS(Simple Notification Service) 주제
  • Amazon SQS(Simple Queue Service) 대기열
  • AWS Lambda
  • Amazon EventBridge

하지만 각 이벤트 알림에는 대상 유형 하나만 지정할 수 있어요.

Amazon S3가 Amazon SNS 주제나 Amazon SQS 대기열에 메시지를 게시하도록 권한을 부여해야 해요. 또한 Amazon S3가 사용자 대신 AWS Lambda 함수를 호출할 권한도 부여해야 해요. 이 권한을 부여하는 방법은 대상에 이벤트 알림 메시지 게시 권한 부여를 참고하세요.

Amazon SNS 주제 – Amazon SNS는 유연하고 완전 관리형인 푸시 메시징 서비스예요. 이 서비스를 사용해 모바일 기기나 분산 서비스로 메시지를 푸시할 수 있어요. SNS로 메시지를 한 번 게시하고 한 번 이상 전달할 수 있어요. 현재 S3 이벤트 알림 대상으로는 Standard SNS만 허용되고 SNS FIFO는 허용되지 않아요. Amazon SNS는 구독 엔드포인트나 클라이언트에 메시지를 보내고 전달하는 것을 조정하고 관리해요. Amazon SNS 콘솔로 알림을 보낼 Amazon SNS 주제를 만들 수 있어요. 주제는 Amazon S3 버킷과 같은 AWS 리전에 있어야 해요. Amazon SNS 주제를 만드는 방법은 Amazon Simple Notification Service 개발자 안내서의 Amazon SNS 시작하기와 Amazon SNS FAQ를 참고하세요. 만든 Amazon SNS 주제를 이벤트 알림 대상으로 사용하려면 다음이 필요해요.

  • Amazon SNS 주제의 Amazon 리소스 이름(ARN)
  • 유효한 Amazon SNS 주제 구독. 구독이 있으면 주제에 메시지가 게시될 때 주제 구독자에게 알림이 가요.

Amazon SQS 대기열 – Amazon SQS는 컴퓨터 사이를 이동하는 메시지를 저장하는 안정적이고 확장 가능한 호스팅 대기열을 제공해요. Amazon SQS로 다른 서비스가 항상 가용하지 않아도 어떤 볼륨의 데이터든 전송할 수 있어요. Amazon SQS 콘솔로 알림을 보낼 Amazon SQS 대기열을 만들 수 있어요. Amazon SQS 대기열은 Amazon S3 버킷과 같은 AWS 리전에 있어야 해요. Amazon SQS 대기열을 만드는 방법은 Amazon Simple Queue Service 개발자 안내서의 Amazon Simple Queue Service란 무엇인가요?와 Amazon SQS 시작하기를 참고하세요. Amazon SQS 대기열을 이벤트 알림 대상으로 사용하려면 다음이 필요해요.

  • Amazon SQS 대기열의 Amazon 리소스 이름(ARN)

Amazon SQS FIFO(First-In-First-Out) 대기열은 Amazon S3 이벤트 알림 대상으로 지원되지 않아요. Amazon S3 이벤트에 대한 알림을 Amazon SQS FIFO 대기열로 보내려면 Amazon EventBridge를 사용하면 돼요. 자세한 내용은 Amazon EventBridge 활성화를 참고하세요.

Amazon SQS 메시지 크기 – Amazon S3 이벤트 알림 메시지는 최대 64KB일 수 있어요. 대기열의 MaximumMessageSize 속성을 최소 64KB로 설정할 것을 권장해요. 이벤트 알림이 대기열의 구성된 MaximumMessageSize를 초과하면 Amazon SQS가 알림을 거부하고 이벤트를 전달하지 않아요.

Lambda 함수 – AWS Lambda로 다른 AWS 서비스를 커스텀 로직으로 확장하거나, AWS 규모·성능·보안으로 작동하는 자체 백엔드를 만들 수 있어요. Lambda로 필요할 때만 실행되는 개별 이벤트 기반 애플리케이션을 만들 수 있어요. 또한 하루 몇 건의 요청부터 초당 수천 건까지 자동으로 확장할 수도 있어요. Lambda는 Amazon S3 버킷 이벤트에 대응해 커스텀 코드를 실행할 수 있어요. 커스텀 코드를 Lambda에 업로드하고 Lambda 함수라고 부르는 것을 만들어요. Amazon S3가 특정 유형의 이벤트를 감지하면, 그 이벤트를 AWS Lambda에 게시하고 Lambda에서 함수를 호출할 수 있어요. 이에 대응해 Lambda는 함수를 실행해요. 감지할 수 있는 이벤트 유형 중 하나는 예를 들어 객체 생성 이벤트예요. AWS Lambda 콘솔로 AWS 인프라를 사용해 사용자 대신 코드를 실행하는 Lambda 함수를 만들 수 있어요. Lambda 함수는 S3 버킷과 같은 리전에 있어야 해요. Lambda 함수를 이벤트 알림 대상으로 설정하려면 Lambda 함수의 이름이나 ARN도 필요해요.

알림이 알림을 트리거하는 것과 같은 버킷에 쓰면 실행 루프가 생길 수 있어요. 예를 들어 객체가 업로드될 때마다 버킷이 Lambda 함수를 트리거하고, 그 함수가 버킷에 객체를 업로드하면 함수가 간접적으로 자기 자신을 트리거하게 돼요. 이를 피하려면 버킷 두 개를 사용하거나, 트리거가 들어오는 객체에 사용되는 접두사에만 적용되도록 구성하세요. Amazon S3 알림을 AWS Lambda와 함께 쓰는 방법과 예제에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 AWS Lambda와 Amazon S3 사용을 참고하세요.

Amazon EventBridge – Amazon EventBridge는 AWS 서비스에서 이벤트를 받는 서버리스 이벤트 버스예요. 이벤트와 일치하는 규칙을 설정하고 AWS 서비스나 HTTP 엔드포인트 같은 대상으로 전달할 수 있어요. 자세한 내용은 Amazon EventBridge 사용 안내서의 EventBridge란 무엇인가요?를 참고하세요. 다른 대상과 달리, 버킷에 대해 이벤트를 EventBridge로 전달할지 활성화하거나 비활성화할 수 있어요. 전달을 활성화하면 모든 이벤트가 EventBridge로 전송돼요. 또한 EventBridge 규칙을 사용해 이벤트를 추가 대상으로 라우팅할 수 있어요.

SQS, SNS, Lambda용 지원 이벤트 유형

Amazon S3는 다음 유형의 이벤트를 게시할 수 있어요. 알림 구성에서 이 이벤트 유형을 지정해요.

이벤트 유형 설명
s3:TestEvent 알림이 활성화되면 Amazon S3가 테스트 알림을 게시해요. 주제가 존재하고 버킷 소유자가 지정된 주제를 게시할 권한이 있는지 확인하기 위해서예요. 알림 활성화가 실패하면 테스트 알림을 받지 못해요.
s3:ObjectCreated:*
s3:ObjectCreated:Put
s3:ObjectCreated:Post
s3:ObjectCreated:Copy
s3:ObjectCreated:CompleteMultipartUpload
PUT, POST, COPY 같은 Amazon S3 API 작업이 객체를 만들 수 있어요. 이 이벤트 유형으로 특정 API 작업을 사용해 객체가 생성될 때 알림을 활성화할 수 있어요. 또는 객체를 만드는 데 사용된 API와 무관하게 알림을 요청하려면 s3:ObjectCreated:* 이벤트 유형을 사용할 수 있어요. s3:ObjectCreated:CompleteMultipartUpload에는 Copy 작업의 UploadPartCopy를 사용해 만들어진 객체도 포함돼요.
s3:ObjectRemoved:*
s3:ObjectRemoved:Delete
s3:ObjectRemoved:DeleteMarkerCreated
ObjectRemoved 이벤트 유형을 사용하면 객체나 객체 배치가 버킷에서 제거될 때 알림을 활성화할 수 있어요. s3:ObjectRemoved:Delete 이벤트 유형으로 객체가 삭제되거나 버전화된 객체가 영구 삭제될 때 알림을 요청할 수 있어요. 또는 s3:ObjectRemoved:DeleteMarkerCreated를 사용해 버전화된 객체에 대해 삭제 마커가 생성될 때 알림을 요청할 수 있어요. 버전화된 객체를 삭제하는 방법은 버전 관리가 활성화된 버킷에서 객체 버전 삭제를 참고하세요. 와일드카드 s3:ObjectRemoved:*를 사용해 객체가 삭제될 때마다 알림을 요청할 수도 있어요. 이 이벤트 알림은 Lifecycle 구성에 의한 자동 삭제나 실패한 작업에 대해서는 알려주지 않아요.
s3:ObjectRestore:*
s3:ObjectRestore:Post
s3:ObjectRestore:Completed
s3:ObjectRestore:Delete
ObjectRestore 이벤트 유형을 사용하면 S3 Glacier Flexible Retrieval 스토리지 클래스, S3 Glacier Deep Archive 스토리지 클래스, S3 Intelligent-Tiering Archive Access 티어, S3 Intelligent-Tiering Deep Archive Access 티어에서 객체를 복원할 때 이벤트 시작·완료에 대한 알림을 받을 수 있어요. 객체의 복원된 복사본이 만료될 때 알림도 받을 수 있어요. s3:ObjectRestore:Post 이벤트 유형은 객체 복원 시작을 알려줘요. s3:ObjectRestore:Completed 이벤트 유형은 복원 완료를 알려줘요. s3:ObjectRestore:Delete 이벤트 유형은 복원된 객체의 임시 복사본이 만료될 때 알려줘요.
s3:ReducedRedundancyLostObject Amazon S3가 RRS 스토리지 클래스의 객체가 손실됐다고 감지하면 이 알림 이벤트를 받아요.
s3:Replication:*
s3:Replication:OperationFailedReplication
s3:Replication:OperationMissedThreshold
s3:Replication:OperationReplicatedAfterThreshold
s3:Replication:OperationNotTracked
Replication 이벤트 유형을 사용하면 S3 복제 지표 또는 S3 복제 시간 제어(S3 RTC)가 활성화된 복제 구성에 대한 알림을 받을 수 있어요. 대기 중인 바이트, 대기 중인 작업, 복제 지연 시간을 추적해 복제 이벤트의 분 단위 진행 상황을 모니터링할 수 있어요. 복제 지표에 대한 정보는 지표, 이벤트 알림, 상태로 복제 모니터링을 참고하세요.
s3:Replication:OperationFailedReplication 이벤트 유형은 복제 대상이었던 객체의 복제가 실패했을 때 알려줘요.
s3:Replication:OperationMissedThreshold 이벤트 유형은 S3 RTC를 사용하는 복제 대상 객체가 15분 복제 임계값을 초과했을 때 알려줘요.
s3:Replication:OperationReplicatedAfterThreshold 이벤트 유형은 S3 RTC를 사용하는 복제 대상 객체가 15분 임계값 이후에 복제됐을 때 알려줘요.
s3:Replication:OperationNotTracked 이벤트 유형은 실시간 복제(동일 리전 복제[SRR] 또는 교차 리전 복제[CRR]) 대상 객체가 더 이상 복제 지표로 추적되지 않을 때 알려줘요.
s3:LifecycleExpiration:*
s3:LifecycleExpiration:Delete
s3:LifecycleExpiration:DeleteMarkerCreated
LifecycleExpiration 이벤트 유형을 사용하면 S3 Lifecycle 구성에 따라 Amazon S3가 객체를 삭제할 때 알림을 받을 수 있어요. s3:LifecycleExpiration:Delete 이벤트 유형은 버전 관리가 없는 버킷에서 객체가 삭제될 때 알려줘요. S3 Lifecycle 구성으로 객체 버전이 영구 삭제될 때도 알려줘요. s3:LifecycleExpiration:DeleteMarkerCreated 이벤트 유형은 버전화된 버킷에서 객체의 현재 버전이 삭제될 때 S3 Lifecycle이 삭제 마커를 만들 때 알려줘요.
s3:LifecycleTransition S3 Lifecycle 구성으로 객체가 다른 Amazon S3 스토리지 클래스로 전환되면 이 알림 이벤트를 받아요.
s3:IntelligentTiering S3 Intelligent-Tiering 스토리지 클래스 안의 객체가 Archive Access 티어나 Deep Archive Access 티어로 이동하면 이 알림 이벤트를 받아요.
s3:ObjectTagging:*
s3:ObjectTagging:Put
s3:ObjectTagging:Delete
ObjectTagging 이벤트 유형을 사용하면 객체 태그가 객체에 추가되거나 삭제될 때 알림을 활성화할 수 있어요. s3:ObjectTagging:Put 이벤트 유형은 객체에 태그가 PUT되거나 기존 태그가 업데이트될 때 알려줘요. s3:ObjectTagging:Delete 이벤트 유형은 객체에서 태그가 제거될 때 알려줘요.
s3:ObjectAnnotation:*
s3:ObjectAnnotation:Put
s3:ObjectAnnotation:Delete
ObjectAnnotation 이벤트 유형을 사용하면 객체에 어노테이션이 생성·업데이트·삭제될 때 알림을 활성화할 수 있어요. s3:ObjectAnnotation:Put 이벤트 유형은 PutObjectAnnotation을 통해 어노테이션이 생성되거나 업데이트될 때 알려줘요. s3:ObjectAnnotation:Delete 이벤트 유형은 DeleteObjectAnnotation을 통해 어노테이션이 삭제될 때 알려줘요.
s3:ObjectAcl:Put 객체에 ACL이 PUT되거나 기존 ACL이 변경되면 이 알림 이벤트를 받아요. 요청이 객체의 ACL에 변화를 주지 않으면 이벤트가 생성되지 않아요.
s3:ObjectRetention:Put PutObjectRetention을 사용해 객체에 보존 구성을 설정하면 이 알림 이벤트를 받아요. 고정 또는 가변 보존 설정, 이벤트 홀드 해제, 이벤트 홀드 기간 수정, 보존-만료일( retain-until-date) 변경을 포함해요.

어노테이션 이벤트 알림에 대한 다음 동작을 기억하세요.

  • PutObjectAnnotation과 DeleteObjectAnnotation은 어노테이션 특정 이벤트만 보내요. s3:ObjectCreated:* 같은 객체 수준 이벤트는 보내지 않아요.
  • GetObjectAnnotation과 ListObjectAnnotations는 이벤트 알림을 보내지 않아요.
  • CopyObject는 표준 s3:ObjectCreated:Copy 이벤트를 보내요. 복사된 객체에 어노테이션이 있으면 이벤트에 hasObjectAnnotation 필드가 true로 설정돼 포함돼요.
  • DeleteObject는 이벤트 페이로드에 어노테이션 관련 필드를 포함하지 않아요.
  • 접두사·접미사 필터는 어노테이션 이름이 아니라 객체 키에만 적용돼요.

Amazon EventBridge용 지원 이벤트 유형

Amazon S3가 Amazon EventBridge로 보낼 이벤트 유형 목록은 EventBridge 사용을 참고하세요.

이벤트 순서 및 중복 이벤트

Amazon S3 이벤트 알림은 최소 한 번은 전달되도록 설계됐지만, 이벤트가 발생한 순서와 같은 순서로 도착한다는 보장은 없어요. 드물게 Amazon S3의 재시도 메커니즘 때문에 같은 객체 이벤트에 대한 중복 S3 이벤트 알림이 생길 수 있어요. 중복 또는 순서가 어긋난 이벤트를 처리하는 방법은 AWS Storage Blog의 Amazon S3 Event Notifications로 이벤트 순서 및 중복 이벤트 관리를 참고하세요.

더 알아보기