From 97363177a564c2664ba40028fd1066a9bc9c77aa Mon Sep 17 00:00:00 2001 From: helloimalastair Date: Thu, 3 Jul 2025 14:14:10 -0700 Subject: [PATCH 1/4] R2-3134: document CRC64NVME support for multipart uploads --- src/content/docs/r2/examples/aws/aws-cli.mdx | 11 ----------- src/content/docs/r2/examples/aws/aws-sdk-go.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-java.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-js-v3.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-net.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-php.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-ruby.mdx | 12 ------------ src/content/docs/r2/examples/aws/aws-sdk-rust.mdx | 12 ------------ src/content/docs/r2/examples/aws/boto3.mdx | 12 ------------ src/content/release-notes/r2.yaml | 3 +++ 10 files changed, 3 insertions(+), 107 deletions(-) diff --git a/src/content/docs/r2/examples/aws/aws-cli.mdx b/src/content/docs/r2/examples/aws/aws-cli.mdx index 5117abe6c679f0..6e019e82ac05ee 100644 --- a/src/content/docs/r2/examples/aws/aws-cli.mdx +++ b/src/content/docs/r2/examples/aws/aws-cli.mdx @@ -10,17 +10,6 @@ import { Render } from "~/components"; With the [`aws`](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) CLI installed, you may run [`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) to configure a new profile. You will be prompted with a series of questions for the new profile's details. -:::note[Compatibility] -Client versions `2.23.0` and `1.37.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `2.22.35` or `1.36.40`, or alternatively, add the CRC32 checksum flag to the cli command: - -```sh -aws s3api put-object --bucket sdk-example --key sdk.png --body file/path --checksum-algorithm CRC32 -``` - -::: - ```shell aws configure ``` diff --git a/src/content/docs/r2/examples/aws/aws-sdk-go.mdx b/src/content/docs/r2/examples/aws/aws-sdk-go.mdx index bbb77ff1bdd18b..f8d61c83a67bc5 100644 --- a/src/content/docs/r2/examples/aws/aws-sdk-go.mdx +++ b/src/content/docs/r2/examples/aws/aws-sdk-go.mdx @@ -10,18 +10,6 @@ import { Render } from "~/components"; This example uses version 2 of the [aws-sdk-go](https://github.com/aws/aws-sdk-go-v2) package. You must pass in the R2 configuration credentials when instantiating your `S3` service client: -:::note[Compatibility] -Client version `1.73.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `1.72.3` or add the following to their config: - -```go -config.WithRequestChecksumCalculation(0) -config.WithResponseChecksumValidation(0) -``` - -::: - ```go package main diff --git a/src/content/docs/r2/examples/aws/aws-sdk-java.mdx b/src/content/docs/r2/examples/aws/aws-sdk-java.mdx index 1fd21e6027ab74..1a670b6cf0abaf 100644 --- a/src/content/docs/r2/examples/aws/aws-sdk-java.mdx +++ b/src/content/docs/r2/examples/aws/aws-sdk-java.mdx @@ -10,18 +10,6 @@ import { Render } from "~/components"; This example uses version 2 of the [aws-sdk-java](https://github.com/aws/aws-sdk-java-v2/#using-the-sdk) package. You must pass in the R2 configuration credentials when instantiating your `S3` service client: -:::note[Compatibility] -Client version `2.30.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `2.29.52` or add the following to their S3Config: - -```java -this.requestChecksumCalculation = "when_required", -this.responseChecksumValidation = "when_required" -``` - -::: - ```java import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; diff --git a/src/content/docs/r2/examples/aws/aws-sdk-js-v3.mdx b/src/content/docs/r2/examples/aws/aws-sdk-js-v3.mdx index 8e4d1f1c367148..33e1224b2db7a8 100644 --- a/src/content/docs/r2/examples/aws/aws-sdk-js-v3.mdx +++ b/src/content/docs/r2/examples/aws/aws-sdk-js-v3.mdx @@ -14,18 +14,6 @@ JavaScript or TypeScript users may continue to use the [`@aws-sdk/client-s3`](ht Currently, you cannot use AWS S3-compatible API while developing locally via `wrangler dev`. ::: -:::note[Compatibility] -Client version `3.729.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `3.726.1` or add the following to their S3Client config: - -```ts -requestChecksumCalculation: "WHEN_REQUIRED", -responseChecksumValidation: "WHEN_REQUIRED", -``` - -::: - ```ts import { S3Client, diff --git a/src/content/docs/r2/examples/aws/aws-sdk-net.mdx b/src/content/docs/r2/examples/aws/aws-sdk-net.mdx index 75f0ec2c2fa441..5eabcd8e5317c1 100644 --- a/src/content/docs/r2/examples/aws/aws-sdk-net.mdx +++ b/src/content/docs/r2/examples/aws/aws-sdk-net.mdx @@ -14,18 +14,6 @@ This example uses version 3 of the [aws-sdk-net](https://www.nuget.org/packages/ In this example, you will pass credentials explicitly to the `IAmazonS3` initialization. If you wish, use a shared AWS credentials file or the SDK store in-line with other AWS SDKs. Refer to [Configure AWS credentials](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html) for more details. -:::note[Compatibility] -Client version `3.7.963.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `3.7.962.0` or add the following to their AmazonS3Config: - -```csharp -RequestChecksumCalculation = "WHEN_REQUIRED", -ResponseChecksumValidation = "WHEN_REQUIRED" -``` - -::: - ```csharp private static IAmazonS3 s3Client; diff --git a/src/content/docs/r2/examples/aws/aws-sdk-php.mdx b/src/content/docs/r2/examples/aws/aws-sdk-php.mdx index d956e5999cbfdc..03b366629b5767 100644 --- a/src/content/docs/r2/examples/aws/aws-sdk-php.mdx +++ b/src/content/docs/r2/examples/aws/aws-sdk-php.mdx @@ -12,18 +12,6 @@ import { Render } from "~/components"; This example uses version 3 of the [aws-sdk-php](https://packagist.org/packages/aws/aws-sdk-php) package. You must pass in the R2 configuration credentials when instantiating your `S3` service client: -:::note[Compatibility] -Client version `3.337.0` introduced a modification to the default checksum behavior from the client that is currently incompatible with R2 APIs. - -To mitigate, users can use `3.336.15` or add the following to their $options: - -```php -'request_checksum_calculation' => 'when_required', -'response_checksum_validation' => 'when_required' -``` - -::: - ```php Date: Mon, 7 Jul 2025 09:20:10 +0100 Subject: [PATCH 2/4] Update src/content/release-notes/r2.yaml --- src/content/release-notes/r2.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release-notes/r2.yaml b/src/content/release-notes/r2.yaml index ccc4451dd1d5f4..0aedbbec8ecae6 100644 --- a/src/content/release-notes/r2.yaml +++ b/src/content/release-notes/r2.yaml @@ -7,7 +7,7 @@ productAreaLink: /workers/platform/changelog/platform/ entries: - publish_date: "2025-07-03" description: |- - - The CRC64NVME Checksum algorithm is now supported for both Single- and Multipart objects. This also brings support for the `FULL_OBJECT` Checksum Type on Multipart Uploads. + - The CRC64NVME Checksum algorithm is now supported for both single and multipart objects. This also brings support for the `FULL_OBJECT` Checksum Type on Multipart Uploads. - publish_date: "2024-12-03" description: |- - [Server-side Encryption with Customer-Provided Keys](/r2/examples/ssec/) is now available to all users via the Workers and S3-compatible APIs. From 6db77878453e3119cbd40733eac3460413cc1cf0 Mon Sep 17 00:00:00 2001 From: helloimalastair Date: Mon, 7 Jul 2025 10:12:35 -0700 Subject: [PATCH 3/4] add compat matrix --- src/content/docs/r2/api/s3/api.mdx | 12 ++++++++++++ src/content/release-notes/r2.yaml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/content/docs/r2/api/s3/api.mdx b/src/content/docs/r2/api/s3/api.mdx index 365825d1e4fed9..bb4bb60364ecae 100644 --- a/src/content/docs/r2/api/s3/api.mdx +++ b/src/content/docs/r2/api/s3/api.mdx @@ -28,6 +28,18 @@ When using the S3 API, the region for an R2 bucket is `auto`. For compatibility This also applies to the `LocationConstraint` for the `CreateBucket` API. +## Checksum Types + +Checksums have an algorithm and a [type](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#ChecksumTypes). All checksums don't necessarily support all types. + +| Checksum Algorithm | `FULL_OBJECT` | `COMPOSITE` | +| ------------------------- | ------------- | ----------- | +| CRC-64/NVME (`CRC64NVME`) | ✅ | ❌ | +| CRC-32 (`CRC32`) | ❌ | ✅ | +| CRC-32C (`CRC32C`) | ❌ | ✅ | +| SHA-1 (`SHA1`) | ❌ | ✅ | +| SHA-256 (`SHA256`) | ❌ | ✅ | + ## Bucket-level operations The following tables are related to bucket-level operations. diff --git a/src/content/release-notes/r2.yaml b/src/content/release-notes/r2.yaml index 0aedbbec8ecae6..3566f63ae54c50 100644 --- a/src/content/release-notes/r2.yaml +++ b/src/content/release-notes/r2.yaml @@ -7,7 +7,7 @@ productAreaLink: /workers/platform/changelog/platform/ entries: - publish_date: "2025-07-03" description: |- - - The CRC64NVME Checksum algorithm is now supported for both single and multipart objects. This also brings support for the `FULL_OBJECT` Checksum Type on Multipart Uploads. + - The CRC-64/NVME Checksum algorithm is now supported for both single and multipart objects. This also brings support for the `FULL_OBJECT` Checksum Type on Multipart Uploads. See Checksum Type Compatibility [here](/r2/api/s3/api/). - publish_date: "2024-12-03" description: |- - [Server-side Encryption with Customer-Provided Keys](/r2/examples/ssec/) is now available to all users via the Workers and S3-compatible APIs. From dddc27cfded488816f966650b7421e37610011df Mon Sep 17 00:00:00 2001 From: Jun Lee Date: Mon, 7 Jul 2025 18:24:44 +0100 Subject: [PATCH 4/4] Update src/content/docs/r2/api/s3/api.mdx --- src/content/docs/r2/api/s3/api.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/r2/api/s3/api.mdx b/src/content/docs/r2/api/s3/api.mdx index bb4bb60364ecae..236692a6fff935 100644 --- a/src/content/docs/r2/api/s3/api.mdx +++ b/src/content/docs/r2/api/s3/api.mdx @@ -30,7 +30,7 @@ This also applies to the `LocationConstraint` for the `CreateBucket` API. ## Checksum Types -Checksums have an algorithm and a [type](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#ChecksumTypes). All checksums don't necessarily support all types. +Checksums have an algorithm and a [type](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#ChecksumTypes). Refer to the table below. | Checksum Algorithm | `FULL_OBJECT` | `COMPOSITE` | | ------------------------- | ------------- | ----------- |