Fix boto3 XAmzContentSHA256Mismatch errors with Ceph RadosGW

- Configure boto3 client with when_required checksum calculation/validation
- Resolves compatibility issues between boto3 v1.36+ and S3-compatible providers
- Fixes 502 errors when uploading artifacts to storage backend

Refs: https://github.com/boto/boto3/issues/4400
This commit is contained in:
Ben Vincent 2026-01-08 23:04:19 +11:00
parent 666ad08518
commit f0f3cfda50

View File

@ -2,6 +2,7 @@ import os
import hashlib import hashlib
from urllib.parse import urlparse from urllib.parse import urlparse
import boto3 import boto3
from botocore.config import Config
from botocore.exceptions import ClientError from botocore.exceptions import ClientError
from fastapi import HTTPException from fastapi import HTTPException
@ -26,6 +27,10 @@ class S3Storage:
endpoint_url=f"http{'s' if self.secure else ''}://{self.endpoint}", endpoint_url=f"http{'s' if self.secure else ''}://{self.endpoint}",
aws_access_key_id=self.access_key, aws_access_key_id=self.access_key,
aws_secret_access_key=self.secret_key, aws_secret_access_key=self.secret_key,
config=Config(
request_checksum_calculation="when_required",
response_checksum_validation="when_required"
)
) )
# Try to ensure bucket exists, but don't fail if MinIO isn't ready yet # Try to ensure bucket exists, but don't fail if MinIO isn't ready yet