Release notes (7)·续
2022-09-06
- The S3
CopyObjectoperation now includesx-amz-version-idandx-amz-copy-source-version-idin the response headers for consistency with other methods. - The
ETagfor multipart files uploaded until shortly after Open Beta uploaded now include the number of parts as a suffix.
2022-08-17
- The S3
DeleteObjectsoperation no longer trims the space from around the keys before deleting. This would result in files with leading / trailing spaces not being able to be deleted. Additionally, if there was an object with the trimmed key that existed it would be deleted instead. The S3DeleteObjectoperation was not affected by this. - Fixed presigned URL support for the S3
ListBucketsandListObjectsoperations.
2022-08-06
- Uploads will automatically infer the
Content-Typebased on file body if one is not explicitly set in thePutObjectrequest. This functionality will come to multipart operations in the future.
2022-07-30
- Fixed S3 conditionals to work properly when provided the
LastModifieddate of the last upload, bindings fixes will come in the next release. If-Match/If-None-Matchheaders now support arrays of ETags, Weak ETags and wildcard (*) as per the HTTP standard and undocumented AWS S3 behavior.
2022-07-21
- Added dummy implementation of the following operation that mimics the response that a basic AWS S3 bucket will return when first created:
GetBucketAcl.
2022-07-20
- Added dummy implementations of the following operations that mimic the response that a basic AWS S3 bucket will return when first created:
GetBucketVersioningGetBucketLifecycleConfigurationGetBucketReplicationGetBucketTaggingGetObjectLockConfiguration
2022-07-19
- Fixed an S3 compatibility issue for error responses with MinIO .NET SDK and any other tooling that expects no
xmlnsnamespace attribute on the top-levelErrortag. - List continuation tokens prior to 2022-07-01 are no longer accepted and must be obtained again through a new
listoperation. - The
list()binding will now correctly return a smaller limit if too much data would otherwise be returned (previously would return anInternal Error).
2022-07-14
- Improvements to 500s: we now convert errors, so things that were previously concurrency problems for some operations should now be
TooMuchConcurrencyinstead ofInternalError. We've also reduced the rate of 500s through internal improvements. ListMultipartUploadcorrectly encodes the returnedKeyif theencoding-typeis specified.
2022-07-13
- S3 XML documents sent to R2 that have an XML declaration are not rejected with
400 Bad Request/MalformedXML. - Minor S3 XML compatibility fix impacting Arq Backup on Windows only (not the Mac version). Response now contains XML declaration tag prefix and the xmlns attribute is present on all top-level tags in the response.
- Beta
ListMultipartUploadssupport.
2022-07-06
- Support the
r2_list_honor_includecompat flag coming up in an upcoming runtime release (default behavior as of 2022-07-14 compat date). Without that compat flag/date, list will continue to function implicitly asinclude: ['httpMetadata', 'customMetadata']regardless of what you specify. cf-create-bucket-if-missingcan be set on aPutObject/CreateMultipartUploadrequest to implicitly create the bucket if it does not exist.- Fix S3 compatibility with MinIO client spec non-compliant XML for publishing multipart uploads. Any leading and trailing quotes in
CompleteMultipartUploadare now optional and ignored as it seems to be the actual non-standard behavior AWS implements.
2022-07-01
- Unsupported search parameters to
ListObjects/ListObjectsV2are now rejected with501 Not Implemented. - Fixes for Listing:
- Fix listing behavior when the number of files within a folder exceeds the limit (you'd end up seeing a CommonPrefix for that large folder N times where N = number of children within the CommonPrefix / limit).
- Fix corner case where listing could cause objects with sharing the base name of a "folder" to be skipped.
- Fix listing over some files that shared a certain common prefix.
DeleteObjectscan now handle 1000 objects at a time.- S3
CreateBucketrequest can specifyx-amz-bucket-object-lock-enabledwith a value offalseand not have the requested rejected with aNotImplementederror. A value oftruewill continue to be rejected as R2 does not yet support object locks.
2022-06-17
- Fixed a regression for some clients when using an empty delimiter.
- Added support for S3 pre-signed URLs.
2022-06-16
- Fixed a regression in the S3 API
UploadPartoperation whereTooMuchConcurrency&NoSuchUploaderrors were being returned asNoSuchBucket.
2022-06-13
- Fixed a bug with the S3 API
ListObjectsV2operation not returning empty folder/s as common prefixes when using delimiters. - The S3 API
ListObjectsV2KeyCountparameter now correctly returns the sum of keys and common prefixes rather than just the keys. - Invalid cursors for list operations no longer fail with an
InternalErrorand now return the appropriate error message.
2022-06-10
- The
ContinuationTokenfield is now correctly returned in the response if provided in a S3 APIListObjectsV2request. - Fixed a bug where the S3 API
AbortMultipartUploadoperation threw an error when called multiple times.
2022-05-27
- Fixed a bug where the S3 API's
PutObjector the.put()binding could fail but still show the bucket upload as successful. - If conditional headers are provided to S3 API
UploadObjectorCreateMultipartUploadoperations, and the object exists, a412 Precondition Failedstatus code will be returned if these checks are not met.
2022-05-20
- Fixed a bug when
Accept-Encodingwas being used inSignedHeaderswhen sending requests to the S3 API would result in aSignatureDoesNotMatchresponse.
2022-05-17
- Fixed a bug where requests to the S3 API were not handling non-encoded parameters used for the authorization signature.
- Fixed a bug where requests to the S3 API where number-like keys were being parsed as numbers instead of strings.
2022-05-16
- Add support for S3 virtual-hosted style paths, such as
<BUCKET>.<ACCOUNT_ID>.r2.cloudflarestorage.cominstead of path-based routing (<ACCOUNT_ID>.r2.cloudflarestorage.com/<BUCKET>). - Implemented
GetBucketLocationfor compatibility with external tools, this will always return aLocationConstraintofauto.
2022-05-06
- S3 API
GetObjectranges are now inclusive (bytes=0-0will correctly return the first byte). - S3 API
GetObjectpartial reads return the proper206 Partial Contentresponse code. - Copying from a non-existent key (or from a non-existent bucket) to another bucket now returns the proper
NoSuchKey/NoSuchBucketresponse. - The S3 API now returns the proper
Content-Type: application/xmlresponse header on relevant endpoints. - Multipart uploads now have a
-Nsuffix on the etag representing the number of parts the file was published with. UploadPartandUploadPartCopynow return proper error messages, such asTooMuchConcurrencyorNoSuchUpload, instead of 'internal error'.UploadPartcan now be sent a 0-length part.
2022-05-05
- When using the S3 API, an empty string and
us-east-1will now alias to theautoregion for compatibility with external tools. GetBucketEncryption,PutBucketEncryptionandDeleteBucketEncrypotionare now supported (the only supported value currently isAES256).- Unsupported operations are explicitly rejected as unimplemented rather than implicitly converting them into
ListObjectsV2/PutBucket/DeleteBucketrespectively. - S3 API
CompleteMultipartUploadsrequests are now properly escaped.
2022-05-03
- Pagination cursors are no longer returned when the keys in a bucket is the same as the
MaxKeysargument. - The S3 API
ListBucketsoperation now acceptscf-max-keys,cf-start-afterandcf-continuation-tokenheaders behave the same as the respective URL parameters. - The S3 API
ListBucketsandListObjectsendpoints now allowper_pageto be 0. - The S3 API
CopyObjectsource parameter now requires a leading slash. - The S3 API
CopyObjectoperation now returns aNoSuchBucketerror when copying to a non-existent bucket instead of an internal error. - Enforce the requirement for
autoin SigV4 signing and theCreateBucketLocationConstraintparameter. - The S3 API
CreateBucketoperation now returns the properlocationresponse header.
2022-04-14
- The S3 API now supports unchunked signed payloads.
- Fixed
.put()for the Workers R2 bindings. - Fixed a regression where key names were not properly decoded when using the S3 API.
- Fixed a bug where deleting an object and then another object which is a prefix of the first could result in errors.
- The S3 API
DeleteObjectsoperation no longer returns an error even though an object has been deleted in some cases. - Fixed a bug where
startAfterandcontinuationTokenwere not working in list operations. - The S3 API
ListObjectsoperation now correctly rendersPrefix,Delimiter,StartAfterandMaxKeysin the response. - The S3 API
ListObjectsV2now correctly honors theencoding-typeparameter. - The S3 API
PutObjectoperation now works withPOSTrequests fors3cmdcompatibility.
2022-04-04
- The S3 API
DeleteObjectsrequest now properly returns aMalformedXMLerror instead ofInternalErrorwhen provided with more than 128 keys.
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://developers.cloudflare.com/r2/platform/release-notes/#page","headline":"Release notes","description":"Latest changes and updates to Cloudflare R2 object storage.","url":"https://developers.cloudflare.com/r2/platform/release-notes/","inLanguage":"en","image":"https://developers.cloudflare.com/r2/platform/release-notes/og.png?v=9314bb7a99d2490c","dateModified":"2026-04-21","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Storage and database options available on Cloudflare's developer platform. title: Choose a data or storage product image: https://developers.cloudflare.com/workers/platform/storage-options/og.png?v=abca508978294b6c
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt
Use this file to discover all available pages before exploring further.
Docs