diff --git a/.changeset/pin-boto3-for-non-aws-s3.md b/.changeset/pin-boto3-for-non-aws-s3.md new file mode 100644 index 000000000..c079b58f3 --- /dev/null +++ b/.changeset/pin-boto3-for-non-aws-s3.md @@ -0,0 +1,7 @@ +--- +"worker-comfyui": patch +--- + +fix: pin `boto3<1.40` so S3 uploads to non-AWS providers (Cloudflare R2, Google Cloud Storage) keep working + +boto3 1.40 ships a botocore release that enforces stricter AWS-only auth flows; uploads to S3-compatible endpoints like GCS and R2 began failing with `SignatureDoesNotMatch`. The fix is a version pin until upstream `runpod` and `aioboto3` stabilize on the new botocore. Reporter on #156 isolated this exactly: `boto3==1.35.40` works, `1.40.1` breaks. diff --git a/Dockerfile b/Dockerfile index e4fcf7d23..999b18d3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,8 +71,11 @@ ADD src/extra_model_paths.yaml ./ # Go back to the root WORKDIR / -# Install Python runtime dependencies for the handler -RUN uv pip install runpod requests websocket-client +# Install Python runtime dependencies for the handler. +# Pin boto3 < 1.40 to keep S3 uploads working against non-AWS S3 endpoints +# (Cloudflare R2, Google Cloud Storage). boto3 1.40+ ships a botocore that +# enforces stricter AWS-only auth flows; see issue #156. +RUN uv pip install runpod requests websocket-client 'boto3<1.40' # Add application code and scripts ADD src/start.sh src/network_volume.py handler.py test_input.json ./