Skip to content

S3 "Response has no supported checksum" with CRC-64NVME #2971

Closed
@lukestoward

Description

@lukestoward

Acknowledgements

Describe the bug

After upgrading to the following AWS SDK versions

github.com/aws/aws-sdk-go-v2 v1.33.0
github.com/aws/aws-sdk-go-v2/service/s3 v1.73.2
...
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.2 // indirect

I've started to see frequent logging of this warning when retrieving objects from S3:

SDK 2025/01/20 10:45:24 WARN Response has no supported checksum. Not validating response payload.

I saw in the checksum v1.5.0 changelog the new default algorithm is CRC32. However, after uploading an object to an S3 bucket using the AWS Console I see that the CRC-64NVME function is used to automatically add a checksum as per the docs, and retrieving that object using the SDK via:

params := &s3.GetObjectInput{
	Bucket: &bucket,
	Key:    &key,
}

resp, err := s3Client.GetObject(ctx, params)

I see the WARN log message above. Is CRC-64NVME not supported by the SDK or does something else need to be configured for the SDK to not log this warning?

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

Expected no warning log after upgrading the SDK modules.

Current Behavior

Warning log is printed every time we get an object from S3.

Reproduction Steps

Manually upload an onbject to S3 without a checksum value, resulting in the CRC-64NVME function to be used. Fetch the file using the Go SDK:

func main() {
	bucket := "my-bucket"
	key := "my-key"

	cfg, _ := config.LoadDefaultConfig(context.Background())
	client := s3.NewFromConfig(cfg)

	params := &s3.GetObjectInput{
		Bucket: &bucket,
		Key:    &key,
	}

	_, _ = client.GetObject(context.Background(), params)
}

Possible Solution

No response

Additional Information/Context

No response

AWS Go SDK V2 Module Versions Used

module sdk-bug

go 1.23.4

require (
	github.com/aws/aws-sdk-go-v2/config v1.29.1
	github.com/aws/aws-sdk-go-v2/service/s3 v1.73.2
)

require (
	github.com/aws/aws-sdk-go-v2 v1.33.0 // indirect
	github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect
	github.com/aws/aws-sdk-go-v2/credentials v1.17.54 // indirect
	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect
	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 // indirect
	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 // indirect
	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
	github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.2 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9 // indirect
	github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect
	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect
	github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect
	github.com/aws/smithy-go v1.22.1 // indirect
)

Compiler and Version used

go version go1.23.4 darwin/arm64

Operating System and version

MacOSX 14.7.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions