Cloudflare R2 버킷 잠금 (Bucket locks)
버킷 잠금(Bucket locks)은 R2 버킷 안 객체의 삭제와 덮어쓰기를 지정된 기간 동안 — 또는 무기한으로 — 방지해요. 활성화하면 객체에 보존 정책을 적용해 실수나 조기 삭제로부터 보호해 줘요.
출처: 문서
본문
버킷 잠금 시작하기
시작 전에 필요한 것:
- 기존 R2 버킷. 아직 기존 R2 버킷이 없다면 Create buckets을 참고해요.
- (API만 해당) R2 버킷 구성을 편집할 권한이 있는 API 토큰.
Dashboard로 버킷 잠금 활성화하기
- Cloudflare dashboard의 R2 object storage 페이지로 이동해요. Overview로 이동
- 버킷 잠금 규칙을 추가할 버킷을 선택해요.
- Settings 탭으로 전환하고 Bucket lock rules 카드까지 스크롤해요.
- Add rule을 선택하고 규칙 이름, prefix, 보존 기간을 입력해요.
- Save changes를 선택해요.
Wrangler로 버킷 잠금 활성화하기
npm을 설치해요.- Wrangler, Developer Platform CLI를 설치해요.
wrangler login명령으로 Wrangler에 로그인해요.r2 bucket lock add명령을 실행해 버킷에 버킷 잠금 규칙을 추가해요.
npx wrangler r2 bucket lock add <BUCKET_NAME> [OPTIONS]
또는 r2 bucket lock set 명령으로 JSON 파일에서 버킷의 전체 버킷 잠금 구성을 설정할 수도 있어요.
npx wrangler r2 bucket lock set <BUCKET_NAME> --file <FILE_PATH>
JSON 파일은 put bucket lock configuration API의 요청 본문 형식이어야 해요.
API로 버킷 잠금 활성화하기
Cloudflare API 시작 방법은 Make API calls을 참고해요. 필수 매개변수와 버킷 잠금 구성 설정 예시는 API documentation을 참고해요.
다음은 버킷 잠금 구성(규칙 모음)을 설정하는 예시예요:
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/r2/buckets/<BUCKET_NAME>/lock" \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
-d '{
"rules": [
{
"id": "lock-logs-7d",
"enabled": true,
"prefix": "logs/",
"condition": {
"type": "Age",
"maxAgeSeconds": 604800
}
},
{
"id": "lock-images-indefinite",
"enabled": true,
"prefix": "images/",
"condition": {
"type": "Indefinite"
}
}
]
}'
이 요청은 두 규칙을 만들어요:
lock-logs-7d:logs/prefix 아래 객체를 7일(604800초) 동안 보존해요.lock-images-indefinite:images/prefix 아래 객체를 무기한 잠급니다.
참고
버킷이 jurisdictional restrictions으로 설정됐다면, 해당 관할권과 함께 cf-r2-jurisdiction 요청 헤더를 전달해야 해요. 예를 들어 cf-r2-jurisdiction: eu처럼요.
R2 버킷의 버킷 잠금 규칙 가져오기
Dashboard
- Cloudflare dashboard의 R2 object storage 페이지로 이동해요. Overview로 이동
- 버킷 잠금 규칙을 추가할 버킷을 선택해요.
- Settings 탭으로 전환하고 Bucket lock rules 카드까지 스크롤해요.
Wrangler
버킷 잠금 규칙을 나열하려면 r2 bucket lock list 명령을 실행해요:
npx wrangler r2 bucket lock list <BUCKET_NAME>
API
버킷 잠금 규칙 가져오기에 필요한 매개변수와 예시는 API documentation을 참고해요.
R2 버킷에서 버킷 잠금 규칙 제거하기
Dashboard
- Cloudflare dashboard의 R2 object storage 페이지로 이동해요. Overview로 이동
- 버킷 잠금 규칙을 제거할 버킷을 선택해요.
- Settings 탭으로 전환하고 Bucket lock rules 카드까지 스크롤해요.
- 제거할 규칙을 찾아 옆의
...아이콘을 선택한 뒤 Delete를 선택해요.
Wrangler
버킷 잠금 규칙을 제거하려면 r2 bucket lock remove 명령을 실행해요:
npx wrangler r2 bucket lock remove <BUCKET_NAME> --id <RULE_ID>
API
API로 버킷 잠금 규칙을 제거하려면 갱신된 구성에서 제외하고 put bucket lock configuration API를 사용해요.
버킷 잠금 규칙
버킷 잠금 구성에는 최대 1,000개의 규칙을 포함할 수 있어요. 각 규칙은 어떤 객체를 다루는지(prefix로)와 그 객체가 얼마나 오래 잠겨 있어야 하는지 지정해요. 할 수 있는 것:
- 특정 기간 동안 객체를 잠그기. 예를 들어 90일.
- 특정 날짜까지 객체 보존하기. 예를 들어 2026년 1월 1일까지.
- 객체를 무기한 잠그기.
여러 규칙이 같은 prefix나 객체 키에 적용되면 가장 엄격한(가장 긴) 보존 요구사항이 우선해요.
참고 사항
- prefix가 없는 규칙은 버킷의 모든 객체에 적용돼요.
- 규칙은 버킷의 새 객체와 기존 객체 모두에 적용돼요.
- 버킷 잠금 규칙은 lifecycle 규칙보다 우선해요. 예를 들어 lifecycle 규칙이 객체를 30일째 삭제하려 해도 버킷 잠금 규칙이 90일 보존을 요구하면, 객체는 90일 요구사항이 충족될 때까지 삭제되지 않아요.
- 버킷 잠금 규칙이 구성되어 있는 동안에는 버킷을 비울 수 없어요. 버킷을 비우기 전에 모든 잠금 규칙을 제거해요. 버킷 잠금 규칙은 dashboard에서 폴더를 삭제할 때도 적용돼요.
더 알아보기 (Learn more)
- 객체 수명주기(Object lifecycles) — 오래된 객체를 자동으로 관리하는 규칙
- Create buckets — 새 R2 버킷 만들기