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
from urllib.parse import urlparse
import boto3
from botocore.config import Config
from botocore.exceptions import ClientError
from fastapi import HTTPException
@ -26,6 +27,10 @@ class S3Storage:
endpoint_url=f"http{'s' if self.secure else ''}://{self.endpoint}",
aws_access_key_id=self.access_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