2026년 9월 30일 · 5분 분량

S3, R2, B2에서 며칠 후 파일을 자동 삭제하는 방법

검토용 스크린샷, 테스터에게 보낸 빌드, 고객에게 보낸 파일처럼 임시로 공유한 파일은 계속 쌓입니다. 수명 주기 규칙을 쓰면 버킷이 스스로 정리합니다. 요령은 업로드할 때 규칙이 걸린 접두사 아래에 파일을 넣어 보관 기간을 정하는 것입니다.

접두사 패턴

보관 기간마다 규칙을 하나씩 만들고, 각 규칙을 해당 폴더로 제한하세요.

  • tmp/1d/는 1일 후 삭제
  • tmp/7d/는 7일 후 삭제
  • tmp/30d/는 30일 후 삭제

tmp/7d/2026/09/report.pdf에 파일을 업로드하면 일주일 후 사라집니다. tmp/ 밖의 파일은 전혀 건드리지 않습니다.

Cloudflare R2

  1. 버킷의 Settings를 열고 Object lifecycle rules를 찾아 Add rule을 선택합니다.
  2. 이름을 expire-7d 등으로 정하고 접두사를 tmp/7d/로 설정합니다.
  3. 업로드 후 7일이 지나면 객체를 삭제하도록 선택하고 저장합니다.

Wrangler로 설정할 수도 있습니다.

npx wrangler r2 bucket lifecycle add your-bucket expire-7d tmp/7d/ --expire-days 7

Amazon S3

  1. 버킷을 열고 Management로 이동해 Create lifecycle rule을 선택합니다.
  2. 규칙 이름을 정하고 Limit the scope using filters를 선택한 뒤 접두사를 tmp/7d/로 입력합니다.
  3. 작업에서 Expire current versions of objects를 선택하고 7일을 입력합니다. 버전 관리가 켜진 버킷이라면 이전 버전도 영구 삭제하도록 설정하세요.

AWS CLI로는 다음과 같습니다.

{
  "Rules": [
    {
      "ID": "expire-7d",
      "Status": "Enabled",
      "Filter": { "Prefix": "tmp/7d/" },
      "Expiration": { "Days": 7 }
    }
  ]
}
aws s3api put-bucket-lifecycle-configuration --bucket your-bucket \
  --lifecycle-configuration file://lifecycle.json

이 명령어는 버킷의 수명 주기 구성 전체를 덮어쓰므로, 기존 규칙이 있다면 함께 포함하세요.

Backblaze B2

버킷의 Lifecycle Settings에서 사용자 지정 규칙을 선택하고 파일 이름 접두사가 tmp/7d/인 규칙을 추가하세요. B2는 days from uploading to hiding(업로드 후 숨김까지 일수)과 days from hiding to deleting(숨김 후 삭제까지 일수)의 두 단계로 작동합니다. 일주일쯤 후에 사라지게 하려면 각각 6과 1로 설정하세요.

파일은 정확히 언제 삭제되나요?

수명 주기 규칙은 백그라운드에서 보통 하루에 한 번 실행됩니다. Amazon S3는 업로드 시각부터 계산해 다음 UTC 자정으로 올림한 뒤 객체를 삭제 대기열에 넣으며, 만료된 시점부터는 요금이 부과되지 않습니다. 실제로는 기한이 지난 뒤에도 최대 하루 정도 파일에 접근할 수 있습니다. 링크가 정확한 시각에 작동을 멈춰야 한다면 미리 서명된 URL을 사용하세요.

자주 묻는 질문

컴퓨터가 꺼져 있어도 수명 주기 규칙이 파일을 삭제하나요?

네. 규칙은 버킷에 저장되어 제공업체 쪽에서 실행되므로, 내 쪽에서는 아무것도 실행 중일 필요가 없습니다.

며칠이 아니라 몇 시간 후에 삭제할 수 있나요?

아니요. 수명 주기 규칙은 일 단위로만 작동합니다. 몇 시간 안에 만료되어야 하는 링크라면 파일을 비공개로 두고 미리 서명된 URL로 공유하세요.

수명 주기 규칙이 접두사 밖의 파일도 삭제하나요?

아니요. 접두사 필터가 있는 규칙은 해당 접두사로 시작하는 키에만 적용됩니다. 필터가 없는 규칙은 버킷 전체에 적용되므로 항상 필터를 설정하세요.