릴리스 노트 (Release notes)
Cloudflare R2 객체 스토리지의 최신 변경 사항과 업데이트를 정리했어요.
출처: 문서
본문
2026-04-27
2025-09-23
- 대시보드에서 버킷 잠금(bucket lock) 규칙이 적용된 객체도 삭제를 시도할 수 있던 버그를 수정했어요. 이전에는 삭제 직후 표에서 잠시 사라졌다가 페이지를 새로고침하면 다시 나타났죠. 이제 대시보드에서 잠긴 객체의 삭제 동작이 비활성화됩니다.
2025-09-22
- 필요한 것을 더 쉽게 찾고 조치를 취할 수 있도록 R2 대시보드를 더 깔끔한 모습으로 업데이트했어요. 다양한 API 인터페이스로 R2를 사용하는 방법에 대한 안내는 사이드 패널에서, 문서는 하단에서 쉽게 접근할 수 있어요.
2025-07-03
- CRC-64/NVME Checksum 알고리즘이 이제 단일 및 멀티파트 객체 모두에서 지원돼요. 이에 따라 멀티파트 업로드에서
FULL_OBJECTChecksum Type도 지원됩니다. Checksum Type 호환성은 여기에서 확인할 수 있어요.
2024-12-03
- 고객 제공 키를 사용한 서버 측 암호화(SSE-C)가 이제 Workers 및 S3 호환 API를 통해 모든 사용자에게 제공됩니다.
2024-11-21
- Sippy를 이제 관할권(jurisdictions)이 있는 버킷(예: EU, FedRAMP)에서도 활성화할 수 있어요.
- 특수 문자가 포함된 객체에 대한 GET/HEAD 요청이 오류 응답을 반환하던 Sippy 문제를 수정했어요.
2024-11-20
- 오세아니아(OC)가 이제 R2 지역(region)으로 제공됩니다.
- 계정당 기본 최대 버킷 수가 이제 100만 개예요. 100만 개가 넘는 버킷이 필요하면 Cloudflare Support에 문의하세요.
- 커스텀 도메인을 통해 접근하는 공개 버킷이 이제 Smart Tiered Cache를 지원해요.
2024-11-19
- Wrangler에 R2
bucket lifecycle명령이 추가됐어요. 객체 수명주기 규칙을 나열·추가·제거할 수 있어요.
2024-11-14
- Wrangler에 R2
bucket info명령이 추가됐어요. 버킷의 위치와 주요 메트릭을 표시해요.
2024-11-08
- Wrangler에 R2
bucket dev-url명령이 추가됐어요. 버킷의 r2.dev 공개 액세스 URL을 활성화·비활성화하고 상태를 조회할 수 있어요.
2024-11-06
- Wrangler에 R2
bucket domain명령이 추가됐어요. R2 버킷 커스텀 도메인을 나열·추가·제거·업데이트할 수 있어요.
2024-11-01
- 커스텀 도메인 나열 엔드포인트의 응답에
minTLS를 추가했어요.
2024-10-28
- 커스텀 도메인 조회 엔드포인트를 추가했어요.
2024-10-21
- 관할권(jurisdictions)이 있는 R2 버킷(예: EU, FedRAMP)에서 이벤트 알림을 구성할 수 있게 됐어요.
2024-09-26
- R2용 이벤트 알림이 이제 일반 공개(GA)됐어요. 이벤트 알림은 더 높은 처리량(Queue당 초당 최대 5,000개 메시지)을 지원하고, 대시보드와 Wrangler에서 구성할 수 있으며, 수명주기 삭제를 지원해요.
2024-09-18
- R2 버킷 커스텀 도메인의 최소 TLS 버전 설정·업데이트 기능을 추가했어요.
2024-08-26
- API를 통한 R2 버킷 커스텀 도메인 구성 지원을 추가했어요.
2024-08-21
- Sippy가 이제 일반 공개(GA)됐어요. 진행 중인 마이그레이션의 메트릭은 이제 대시보드 또는 GraphQL 분석 API에서 확인할 수 있어요.
2024-07-08
- 대시보드의 마이그레이션 요약에 Super Slurper 마이그레이션 로그를 추가했어요.
2024-06-12
- Super Slurper가 이제 최대 1TB 크기의 객체 마이그레이션을 지원해요.
2024-06-07
- Sippy가 SSE가 설정된 S3 버킷의 객체를 복사하지 못하던 문제를 수정했어요.
2024-06-06
- R2가
x-purpose요청 파라미터를 무시하게 됐어요.
2024-05-29
- Infrequent Access 스토리지 클래스(베타) 지원을 추가했어요.
2024-05-24
- 임시 액세스 토큰 생성 엔드포인트를 추가했어요.
2024-04-03
- R2용 이벤트 알림이 공개 베타로 제공되기 시작했어요.
- Super Slurper가 Google Cloud Storage에서의 마이그레이션을 지원해요.
2024-02-20
- 공개 엔트리포인트에 대한
OPTIONS요청에origin헤더가 없을 때HTTP 401대신HTTP 400을 반환하게 됐어요.
2024-02-06
GET /buckets/:bucket/sippy의 응답 형태가 변경됐어요.- Sippy 구성을 검증하는
/buckets/:bucket/sippy/validate엔드포인트가 APIGW를 통해 노출돼요. - Sippy 구성을 수정할 때 구성 객체의 형태가 변경됐어요.
2024-02-02
- GetBucket 엔드포인트를 업데이트했어요: 이제
bucket_id대신bucket_name으로 조회해요.
2024-01-30
- API가
PutBucketCors작업의AllowedHeaders속성에서 빈 문자열을 받아들이던 버그를 수정했어요.
2024-01-26
CompleteMultipartUpload동안 파트가 입력 순서와 관계없이 이제 자동으로 오름차순 정렬돼요.
2024-01-11
- Sippy가 Google Cloud Storage(GCS) 베타에 제공돼요.
2023-12-11
S3 ListBuckets작업의x-id쿼리 파라미터가 이제 무시돼요.- 모든 S3 작업에서
x-id쿼리 파라미터가 이제 무시돼요.
2023-10-23
PutBucketCors가 이제 유효한 origin만 허용해요.
2023-09-01
ListBuckets에서name_contains파라미터가 관할권 이름까지 검색하던 문제를 수정했어요.
2023-08-23
- Config Audit Logs가 일반 공개(GA)됐어요.
2023-08-11
- 사용자가 조건부 멀티파트 게시(conditional multipart publish) 작업을 완료할 수 있게 됐어요. 업로드를 게시할 때 조건이 실패하면 해당 업로드는 더 이상 사용할 수 없고 중단(aborted)된 것으로 처리돼요.
2023-07-05
- 매우 큰 파일의 범위 읽기(ranged reads) 성능을 개선했어요. 이전에는 매우 큰 파일의 끝부분 근처 범위 읽기가 작은 파일보다 눈에 띄게 느렸죠. 이제 파일 크기와 관계없이 성능이 일관되게 좋아졌어요.
2023-06-21
- 멀티파트 ETag가 이제 MD5 해시예요.
2023-06-16
- 존재하지 않는 버킷에 GetBucket을 호출하면 404 대신 500을 반환하던 버그를 수정했어요.
- ListObjectsV1의 S3 호환성을 개선했어요. 이제
truncated가 true일 때만nextmarker가 설정돼요. - R2 worker 바인딩이 이제 여러 etag를 포함하는 조건부 헤더를 파싱할 수 있어요. 이 etag들은 이제 강(strong), 약(weak) 또는 와일드카드일 수 있어요. 이전에는 바인딩이 단일 강 etag를 포함한 헤더만 허용했어요.
- S3 putObject가 이제 sha256과 sha1 체크섬을 지원해요. 이 기능은 R2 worker 바인딩에서 이미 지원되고 있었죠.
- S3 호환 API의 CopyObject가 이제 대상 객체의 상태에 따라 복사 작업을 조건부로 수행할 수 있는 Cloudflare 특정 헤더를 지원해요.
2023-04-01
- GetBucket을 이제 Cloudflare API를 통해 사용할 수 있어요.
- Location hints를 이제 S3 API와 대시보드 모두에서 버킷 생성 시 설정할 수 있어요.
2023-03-16
- ListParts API가 구현되어 사용할 수 있어요.
- R2 버킷에 연결된 새 커스텀 도메인에는 HTTP2가 기본적으로 활성화돼요.
- 객체 수명주기(Object Lifecycles)를 사용할 수 있게 됐어요.
- 버그 수정: 공개 버킷 요청이
Accept-Encoding: gzip사용 시 gzip 파일에 대한Content-Encoding헤더를 이제 반환해요.
2023-01-27
- R2 토큰 페이지에서 생성한 R2 인증 토큰이 이제 기본적으로 단일 계정으로 범위가 제한돼요.
2022-12-07
- S3 API용 CORS 사전 검사(preflight) 요청을 수정해 브라우저에서 S3 SDK를 사용할 수 있게 됐어요.
- R2 바인딩 API의
get작업에 range 헤더를 전달하는 것이 이제 예상대로 동작해요.
2022-11-30
x-amz-acl: public-read헤더가 있는 요청이 더 이상 거부되지 않아요.- 와일드카드 CORS 규칙과 사전 서명(presigned) URL 관련 문제를 수정했어요.
- 유니코드 정규화 키의 구분자(delimited) 목록 중
ListObjects가 타임아웃되던 문제를 수정했어요. - S3 API의
PutBucketCors가 이제 XML 본문에 알 수 없는 키가 있으면 요청을 거부해요. - 추가 헤더 서명이 사전 서명 URL의 CORS 사전 검사 요청을 깨뜨리지 않게 됐어요.
2022-11-21
startAfter접두사 바로 다음에 숫자가 있는 키를 가진 객체를ListObjects의startAfter가 건너뛰던 버그를 수정했어요.- 멀티파트 업로드용 worker 바인딩을 추가했어요.
2022-11-17
- 다른 S3 호환 구현과 동작을 맞추기 위해 범위 요청에 대해 무조건 HTTP 206을 반환하게 됐어요.
- CORS 구성의
AllowedHeaders가 대소문자를 구분해 처리되던 CORS 버그를 수정했어요.
2022-11-08
CopyObject를 통한 멀티파트 객체 복사가 다시 활성화됐어요.UploadPartCopy가 다시 활성화됐어요.
2022-10-28
- 멀티파트 업로드 파트 크기는 항상 동일해야 하는데, 이제 파트를 업로드할 때마다가 아니라 업로드를 완료할 때 이 요구사항이 적용돼요.
- 동시 멀티파트 파트 업로드가 거부되던 성능 문제를 수정했어요.
2022-10-26
- 파트 크기가 64KiB에 정렬되지 않은 멀티파트 객체의 범위 읽기를 수정했어요.
2022-10-19
HeadBucket가 이제 응답에서x-amz-bucket-region을auto로 설정해요.
2022-10-06
- 문제를 조사하는 동안
UploadPartCopy를 일시적으로 비활성화했어요.
2022-09-29
- 사전 검사 요청에
Access-Control-Allow-Headers가 설정되지 않던 CORS 문제를 수정했어요.
2022-09-28
- CORS 구성이 S3 엔드포인트에 적용되지 않던 버그를 수정했어요.
ExposeHeader가 정의되지 않으면Access-Control-Expose-Headers응답 헤더를 더 이상 렌더링하지 않아요.- 공개 버킷은 응답이 부분적이지 않으면 더 이상
Content-Range응답 헤더를 반환하지 않아요. - S3
HeadObject작업의 CORS 렌더링을 수정했어요. - 일치하는 CORS 구성이 없을 때
403응답이 나올 수 있던 버그를 수정했어요. - 멀티파트 업로드로 생성된 객체 복사를 일시적으로 비활성화했어요.
- Workers 바인딩에서 잘못된 형식의 범위
.get요청에 내부 오류가 반환되던 버그를 수정했어요.
2022-09-27
- S3 및 공개 버킷에 대해 CORS 사전 검사 응답과 다른 응답에 대한 CORS 헤더 추가가 구현됐어요. 현재 CORS를 구성하는 유일한 방법은 S3 API를 통해서예요.
- 커스텀 메타데이터에
"가 있거나 일부 키/값에 특정 멀티바이트 UTF-8 값이 포함된 키를 나열할 때 바인딩 목록 절사(truncation)가 더 정확하게 동작하도록 수정했어요. - S3
GetObject작업은 이제 범위 요청에 대해서만Content-Range를 반환해요.
2022-09-19
- R2
put()바인딩 옵션에get()과 유사한onlyIf필드를 지정해 조건부 업로드를 수행할 수 있게 됐어요. - R2
delete()바인딩이 이제 한 번에 여러 키를 삭제할 수 있어요. - R2
put()바인딩이 이제 옵션에서 사용자 지정 SHA-1, SHA-256, SHA-384, SHA-512 체크섬을 지원해요. - 사용자 지정 객체 체크섬이 이제 R2
get()및head()바인딩 응답에서 제공돼요. 비멀티파트로 업로드된 객체에는 MD5가 기본 포함돼요.
2022-09-06
- S3
CopyObject작업이 이제 다른 메서드와의 일관성을 위해 응답 헤더에x-amz-version-id와x-amz-copy-source-version-id를 포함해요. - Open Beta 직후까지 업로드된 멀티파트 파일의
ETag가 이제 파트 수를 접미사로 포함해요.
2022-08-17
- S3
DeleteObjects작업이 삭제 전에 키 주변의 공백을 더 이상 자르지 않아요. 이전에는 앞/뒤에 공백이 있는 파일을 삭제할 수 없었죠. 또한, 잘린 키를 가진 객체가 존재하면 그 객체가 대신 삭제될 수 있었어요. S3DeleteObject작업은 이 문제의 영향을 받지 않았어요. - S3
ListBuckets및ListObjects작업의 사전 서명 URL 지원을 수정했어요.
2022-08-06
- 업로드 시
PutObject요청에 명시적으로 설정하지 않으면 파일 본문을 기반으로Content-Type을 자동으로 추론해요. 이 기능은 향후 멀티파트 작업에도 제공될 예정이에요.
2022-07-30
- 마지막 업로드의
LastModified날짜를 제공했을 때 S3 조건부 요청이 제대로 동작하도록 수정했어요. 바인딩 수정은 다음 릴리스에서 제공돼요. If-Match/If-None-Match헤더가 HTTP 표준 및 문서화되지 않은 AWS S3 동작에 따라 ETag 배열, 약(Weak) ETag 및 와일드카드(*)를 지원해요.
2022-07-21
- 기본 AWS S3 버킷이 처음 생성될 때 반환하는 응답을 모방하는 다음 작업의 더미 구현을 추가했어요:
GetBucketAcl.
2022-07-20
- 기본 AWS S3 버킷이 처음 생성될 때 반환하는 응답을 모방하는 다음 작업들의 더미 구현을 추가했어요:
GetBucketVersioningGetBucketLifecycleConfigurationGetBucketReplicationGetBucketTaggingGetObjectLockConfiguration
2022-07-19
- 최상위
Error태그에xmlns네임스페이스 속성이 없을 것으로 예상하는 MinIO .NET SDK 및 기타 도구의 오류 응답에 대한 S3 호환성 문제를 수정했어요. - 2022-07-01 이전의 목록 연속 토큰(continuation tokens)은 더 이상 허용되지 않으며, 새
list작업을 통해 다시 얻어야 해요. list()바인딩이 너무 많은 데이터를 반환해야 하는 경우 이제 올바르게 더 작은 limit을 반환해요(이전에는Internal Error를 반환했어요).
2022-07-14
- 500 개선: 이제 오류를 변환해서, 일부 작업에서 이전에 동시성 문제였던 것들이
InternalError대신TooMuchConcurrency가 돼요. 내부 개선을 통해 500 발생률도 줄였어요. ListMultipartUpload가encoding-type이 지정된 경우 반환되는Key를 올바르게 인코딩해요.
2022-07-13
- XML 선언이 포함된 S3 XML 문서가 더 이상
400 Bad Request/MalformedXML로 거부되지 않아요. - Arq Backup(Windows 버전만, Mac 버전 아님)에 영향을 주는 사소한 S3 XML 호환성 수정. 응답에 이제 XML 선언 태그 접두사가 포함되고, 모든 최상위 태그에 xmlns 속성이 존재해요.
- 베타
ListMultipartUploads지원.
2022-07-06
- 곧 출시될 런타임 버전에서 제공될
r2_list_honor_include호환 플래그를 지원해요(2022-07-14 호환 날짜 기준 기본 동작). 해당 호환 플래그/날짜가 없으면 list가 지정한 값과 관계없이include: ['httpMetadata', 'customMetadata']로 암시적으로 계속 동작해요. cf-create-bucket-if-missing를PutObject/CreateMultipartUpload요청에 설정해 버킷이 없으면 암시적으로 버킷을 생성할 수 있어요.- MinIO 클라이언트 사양과 맞지 않는 XML로 멀티파트 업로드를 게시할 때의 S3 호환성을 수정했어요.
CompleteMultipartUpload에서 앞뒤 따옴표는 이제 선택 사항이며, AWS가 구현하는 실제 비표준 동작처럼 보이므로 무시돼요.
2022-07-01
ListObjects/ListObjectsV2에 대한 지원되지 않는 검색 파라미터가 이제501 Not Implemented로 거부돼요.- 나열(Listing) 수정:
- 폴더 안의 파일 수가 limit을 초과할 때의 나열 동작을 수정했어요(해당 큰 폴더의 CommonPrefix가 N번 표시되던 문제, 여기서 N = CommonPrefix 내 자식 수 / limit).
- "폴더"의 기본 이름을 공유하는 객체가 나열 시 건너뛸 수 있는 가장자리 케이스를 수정했어요.
- 특정 공통 접두사를 공유하는 일부 파일의 나열을 수정했어요.
DeleteObjects가 이제 한 번에 1000개 객체를 처리할 수 있어요.- S3
CreateBucket요청이 값false인x-amz-bucket-object-lock-enabled을 지정할 수 있고,NotImplemented오류로 거부되지 않아요. R2는 아직 객체 잠금(object lock)을 지원하지 않으므로 값true는 계속 거부돼요.
2022-06-17
- 일부 클라이언트에서 빈 구분자(delimiter) 사용 시 발생하던 회귀 문제를 수정했어요.
- S3 사전 서명(pre-signed) URL 지원을 추가했어요.
2022-06-16
TooMuchConcurrency및NoSuchUpload오류가NoSuchBucket로 반환되던 S3 APIUploadPart작업의 회귀 문제를 수정했어요.
2022-06-13
- S3 API
ListObjectsV2작업이 구분자 사용 시 빈 폴더를 공통 접두사(common prefix)로 반환하지 않던 버그를 수정했어요. - S3 API
ListObjectsV2의KeyCount파라미터가 이제 키뿐 아니라 키와 공통 접두사의 합을 올바르게 반환해요. - 목록 작업의 잘못된 커서가 더 이상
InternalError로 실패하지 않고 적절한 오류 메시지를 반환해요.
2022-06-10
- S3 API
ListObjectsV2요청에ContinuationToken이 제공되면 응답에서 올바르게 반환되도록 수정했어요. - S3 API
AbortMultipartUpload작업을 여러 번 호출하면 오류가 발생하던 버그를 수정했어요.
2022-05-27
- S3 API의
PutObject또는.put()바인딩이 실패해도 버킷 업로드가 성공한 것처럼 표시될 수 있던 버그를 수정했어요. - S3 API
UploadObject또는CreateMultipartUpload작업에 조건부 헤더가 제공되고 객체가 존재할 때, 검사가 충족되지 않으면412 Precondition Failed상태 코드가 반환돼요.
2022-05-20
- S3 API에 요청을 보낼 때
SignedHeaders에서Accept-Encoding을 사용하면SignatureDoesNotMatch응답이 발생하던 버그를 수정했어요.
2022-05-17
- S3 API에 대한 요청이 인증 서명에 사용되는 인코딩되지 않은 파라미터를 처리하지 않던 버그를 수정했어요.
- 숫자처럼 보이는 키가 문자열이 아닌 숫자로 파싱되던 S3 API 요청 버그를 수정했어요.
2022-05-16
- 경로 기반 라우팅(
<ACCOUNT_ID>.r2.cloudflarestorage.com/<BUCKET>) 대신 S3 가상 호스트 스타일 경로(예:<BUCKET>.<ACCOUNT_ID>.r2.cloudflarestorage.com) 지원을 추가했어요. - 외부 도구와의 호환성을 위해
GetBucketLocation을 구현했어요. 항상LocationConstraint를auto로 반환해요.
2022-05-06
- S3 API
GetObject범위가 이제 포괄적(inclusive)이에요(bytes=0-0이 첫 번째 바이트를 올바르게 반환해요). - S3 API
GetObject부분 읽기가 적절한206 Partial Content응답 코드를 반환해요. - 존재하지 않는 키(또는 존재하지 않는 버킷)에서 다른 버킷으로 복사하면 이제 적절한
NoSuchKey/NoSuchBucket응답을 반환해요. - S3 API가 이제 관련 엔드포인트에서 적절한
Content-Type: application/xml응답 헤더를 반환해요. - 멀티파트 업로드의 etag에 이제 파일이 게시된 파트 수를 나타내는
-N접미사가 붙어요. UploadPart와UploadPartCopy가 이제 'internal error' 대신TooMuchConcurrency나NoSuchUpload같은 적절한 오류 메시지를 반환해요.UploadPart에 0 길이 파트를 보낼 수 있게 됐어요.
2022-05-05
- S3 API 사용 시 외부 도구와의 호환성을 위해 빈 문자열과
us-east-1이 이제auto지역에 대한 별칭으로 동작해요. GetBucketEncryption,PutBucketEncryption,DeleteBucketEncrypotion이 이제 지원돼요(현재 지원되는 유일한 값은AES256이에요).- 지원되지 않는 작업이 암시적으로 각각
ListObjectsV2/PutBucket/DeleteBucket로 변환되는 대신, 구현되지 않은 것으로 명시적으로 거부돼요. - S3 API
CompleteMultipartUploads요청이 이제 올바르게 이스케이프 처리돼요.
2022-05-03
- 버킷의 키 수가
MaxKeys인수와 같을 때 페이지네이션 커서가 더 이상 반환되지 않아요. - S3 API
ListBuckets작업이 이제cf-max-keys,cf-start-after,cf-continuation-token헤더를 각각의 URL 파라미터와 동일하게 동작하도록 허용해요. - S3 API
ListBuckets및ListObjects엔드포인트가 이제per_page값을 0으로 허용해요. - S3 API
CopyObject소스 파라미터가 이제 앞에 슬래시(leading slash)를 요구해요. - S3 API
CopyObject작업이 존재하지 않는 버킷으로 복사할 때 내부 오류 대신NoSuchBucket오류를 반환해요. - SigV4 서명과
CreateBucketLocationConstraint파라미터의auto요구사항을 강제해요. - S3 API
CreateBucket작업이 이제 올바른location응답 헤더를 반환해요.
2022-04-14
- S3 API가 이제 청크되지 않은(un-chunked) 서명된 페이로드를 지원해요.
- Workers R2 바인딩의
.put()을 수정했어요. - S3 API 사용 시 키 이름이 제대로 디코딩되지 않던 회귀 문제를 수정했어요.
- 객체를 삭제한 후 해당 객체의 접두사인 다른 객체를 삭제할 때 오류가 발생할 수 있던 버그를 수정했어요.
- S3 API
DeleteObjects작업이 일부 경우에 객체가 삭제되었음에도 오류를 반환하지 않도록 수정했어요. - 목록 작업에서
startAfter와continuationToken이 동작하지 않던 버그를 수정했어요. - S3 API
ListObjects작업이 이제 응답에서Prefix,Delimiter,StartAfter,MaxKeys를 올바르게 렌더링해요. - S3 API
ListObjectsV2가 이제encoding-type파라미터를 올바르게 존중해요. - S3 API
PutObject작업이s3cmd호환성을 위해POST요청과 함께 동작해요.
2022-04-04
- S3 API
DeleteObjects요청에 128개가 넘는 키가 제공되면InternalError대신 올바르게MalformedXML오류를 반환해요.