Skip to content

[Week 4] L1-012 답안 제출 #22

@do-dop

Description

@do-dop

Week

4

Scenario ID

L1-012

Problem Identification

[이슈 1] s3-bucket-nb9qtp, s3-bucket-c3hawv | 심각도: high | 유형: data

S3 버킷 2개에서 이전 버전 객체가 무제한 누적되어 불필요한 스토리지 비용 발생
버저닝이 활성화된 S3 버킷에 noncurrent version 정리 정책이 없어 이전 버전 객체들이 계속 누적되고 있음

Root Cause

S3 버킷에 lifecycle 정책이 설정되지 않아 이전 버전 객체들이 자동 삭제되지 않음

  • s3-bucket-nb9qtp: noncurrent_version_count 평균 369.5개, 최대 729개로 190% 증가 추세
  • s3-bucket-c3hawv: noncurrent_version_count 평균 15,566개로 대량 누적
  • Terraform 코드에 aws_s3_bucket_lifecycle_configuration 리소스 누락

Proposed Solution

S3 버킷에 noncurrent version 자동 삭제 정책을 추가하여 이전 버전 객체 정리

  • aws_s3_bucket_lifecycle_configuration 리소스 추가
  • noncurrent_version_expiration을 30일로 설정하여 이전 버전 자동 삭제

Estimated Monthly Savings (USD)

230

Optimized Terraform

terraform {
    required_providers {
      aws = {
        source  = "hashicorp/aws"
        version = "~> 5.0"
      }
    }
  }

  provider "aws" {
    region = "us-east-1"
  }

  resource "aws_s3_bucket" "s3-bucket-nb9qtp" {
    bucket = "app-assets-prod"

    tags = {
      Name = "app-assets-prod"
    }
  }

  resource "aws_s3_bucket_versioning" "s3-bucket-nb9qtp" {
    bucket = aws_s3_bucket.s3-bucket-nb9qtp.id

    versioning_configuration {
      status = "Enabled"
    }
  }

  resource "aws_s3_bucket_lifecycle_configuration" "s3-bucket-nb9qtp" {
    bucket = aws_s3_bucket.s3-bucket-nb9qtp.id

    rule {
      id     = "expire-noncurrent-versions-30d"
      status = "Enabled"

      noncurrent_version_expiration {
        noncurrent_days = 30
      }
    }
  }

  resource "aws_s3_bucket" "s3-bucket-c3hawv" {
    bucket = "app-assets-staging"

    tags = {
      Name = "app-assets-staging"
    }
  }

  resource "aws_s3_bucket_versioning" "s3-bucket-c3hawv" {
    bucket = aws_s3_bucket.s3-bucket-c3hawv.id

    versioning_configuration {
      status = "Enabled"
    }
  }

  resource "aws_s3_bucket_lifecycle_configuration" "s3-bucket-c3hawv" {
    bucket = aws_s3_bucket.s3-bucket-c3hawv.id

    rule {
      id     = "expire-noncurrent-versions-30d"
      status = "Enabled"

      noncurrent_version_expiration {
        noncurrent_days = 30
      }
    }
  }

Attached Reports

analysis.pdf
(Files committed to submissions/ directory)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions