S3 버킷 이벤트 알림 구성 점검

객체 이벤트를 사용하는 운영 흐름에 맞게 S3 알림 대상과 이벤트 범위를 구성하고 수신을 확인하세요.

설명

객체 생성이나 삭제에 따라 후속 처리를 해야 하는 버킷에 필요한 이벤트 알림이 없으면 운영 자동화나 보안 대응 흐름이 동작하지 않을 수 있습니다. 모든 버킷에 같은 알림이 필요한 것은 아니며 기존의 다른 이벤트 처리 경로도 함께 확인해야 합니다.

S3 이벤트 알림은 전체 감사 로그를 대신하지 않습니다. 전달은 최소 한 번을 목표로 설계되어 중복 이벤트가 발생할 수 있으므로 수신 처리는 중복을 고려해야 합니다.

잠재적 영향

  • 중요한 파일의 업로드나 삭제를 늦게 발견할 수 있습니다.
  • 이벤트에 의존하는 보안 탐지나 후속 자동화가 동작하지 않을 수 있습니다.
  • 필요한 이벤트의 누락이나 중복 처리로 운영 흐름에 문제가 생길 수 있습니다.

해결 방법

  • 필요한 이벤트 종류와 객체 필터를 정하고 SNS, SQS, Lambda 또는 EventBridge 등 적합한 전달 경로를 구성하세요.
  • 대상 리소스와 권한, 필요한 리전 조건, SNS 구독 등 실제 수신 경로를 확인하고 해당 이벤트로 테스트하세요.
  • 한 버킷의 Terraform 알림 구성을 한곳에서 관리하고 기존에 필요한 대상도 유지하세요. 중복 이벤트를 안전하게 처리하도록 수신 로직을 설계하세요.

예시

버킷 이름은 실제 사용할 값으로 바꾸세요. 변경 후의 정책 데이터 소스는 생략되어 있으며, 버킷과 같은 리전의 SNS 주제에 S3가 게시할 수 있도록 허용해야 합니다. 알림 수신을 위한 SNS 구독도 필요합니다. 빈 알림 구성을 적용하면 기존 알림 설정을 지울 수 있으므로 전체 구성을 확인하세요.

변경 전

hcl
resource "aws_s3_bucket" "bucket" {
  bucket = "your-bucket-name"
}

resource "aws_s3_bucket_notification" "bucket_notification" {
  bucket = aws_s3_bucket.bucket.id
}

변경 후

hcl
resource "aws_sns_topic" "topic" {
  name   = "s3-event-notification-topic"
  policy = data.aws_iam_policy_document.topic.json
}

resource "aws_s3_bucket" "bucket" {
  bucket = "your-bucket-name"
}

resource "aws_s3_bucket_notification" "bucket_notification" {
  bucket = aws_s3_bucket.bucket.id

  topic {
    topic_arn     = aws_sns_topic.topic.arn
    events        = ["s3:ObjectCreated:*"]
    filter_suffix = ".log"
  }
}

설명:

  • 변경 전: 알림 리소스에 전달 대상을 지정하지 않습니다.
  • 변경 후: 이름이 .log로 끝나는 객체의 생성 이벤트를 SNS 주제로 전달합니다. 모든 객체나 삭제 이벤트까지 포함하는 구성은 아닙니다.

참조