From 457f63ae6e7228bca2c68c8c596d4c4451d9bad3 Mon Sep 17 00:00:00 2001 From: Tim Pietrusky Date: Tue, 2 Jun 2026 13:34:02 +0200 Subject: [PATCH] fix: pin boto3<1.40 to keep non-AWS S3 uploads working boto3 1.40 ships a botocore release that enforces stricter AWS-only auth flows. Uploads to S3-compatible endpoints (Cloudflare R2, Google Cloud Storage) started failing with SignatureDoesNotMatch. Pin to <1.40 in the handler dependencies line until upstream runpod and aioboto3 stabilize against the new botocore. Refs #156 --- .changeset/pin-boto3-for-non-aws-s3.md | 7 +++++++ Dockerfile | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/pin-boto3-for-non-aws-s3.md 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 ./