Skip to content

fix(render-farm): use AWS URI encoding for S3 signatures - #3355

Open
vedanth-jadhav wants to merge 1 commit into
CapSoftware:mainfrom
vedanth-jadhav:fix/render-farm-s3-uri
Open

vedanth-jadhav wants to merge 1 commit into
CapSoftware:mainfrom
vedanth-jadhav:fix/render-farm-s3-uri

Conversation

@vedanth-jadhav

@vedanth-jadhav vedanth-jadhav commented Oct 26, 2026 •

Copy link
Copy Markdown

The render farm signs S3 paths and query values with encodeURIComponent, which leaves !'()* unescaped. AWS SigV4 requires those characters to be percent-encoded, so names such as it's (final)!*.mp4, signed response filenames and affected session tokens produce incorrect signatures. Query names also need sorting after encoding.

Use AWS-compatible URI component escaping for object paths, copy-source headers and canonical query names/values, then sort encoded query names. Slash separators remain intact; literal percent signs, spaces, Unicode and plus signs retain their object-key meaning. Signing and presigning share the correction, with no dependency or credential-lifecycle changes.

Validation:

  • Nine new tests use independent fixed signatures generated with AWS @smithy/signature-v4 5.7.4, a fixed date, uriEscapePath=false, AWS path escaping and UNSIGNED-PAYLOAD. Both signing forms cover ordinary keys, punctuation, Unicode/query ordering and temporary session credentials; a copy-part test verifies the transmitted source header. Six checks fail on unchanged production source and all pass with this fix.
  • Full render-farm suite: 172 passed, zero failures, Bun 1.4.4 on Linux x86_64.
  • Scoped strict TypeScript with noUncheckedIndexedAccess, Biome and git diff --check pass.

Reproduce: bun run --cwd apps/render-farm test. Reference SDK packages were used only outside the checkout to produce the vectors; committed tests add no runtime/test dependency. Live AWS credentials/storage were not used. No throughput claim. Rechecked current main and open PRs; browser download authorization #3334 and native upload prefetch #3352 change separate paths.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no actionable issues were found.

Summary

The PR fixes AWS URI escaping for S3 signatures without adding dependencies.

  • S3 requests now escape object keys and query values the way AWS signs them.

No actionable issues were found. This review checked the code and test cases; it did not rerun the suite or make live AWS requests.

Reviews (1) · Last reviewed commit: "fix(render-farm): use AWS URI encoding f..." · Reviewed by Greptile

@vercel

vercel Bot commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
cap-status Skipped Skipped Oct 26, 2026 9:07am UTC

This branch was previously deployed

1 inactive deployment
Preview – cap-status — dba28527 Deployed Oct 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant