S3 Upload (EZ)
Upload a rendered video to S3 and hand back the URL
- filenames
- s3_url
S3 Upload (EZ) is the pack's cloud-exit node: it takes the file output of a VideoHelperSuite Video Combine node and uploads it to an S3 bucket, returning the s3:// URL as a string. If you're running ComfyUI as part of a server-side pipeline - generate a video, push it to storage, hand the reference downstream - this is the node that closes the loop.
Why you'd reach for it
ComfyUI generates files, but files on a server are useless to the rest of your stack. Uploading to S3 makes the result addressable: another service can fetch it, a UI can link it, and - neat synergy - the pack's own Load Img From URL node can read s3:// URIs, so your own workflow can round-trip through storage. The README is explicit that this node replaced a VideoCombine that was removed from the pack; it exists specifically to pick up where VideoHelperSuite's combine step ends.
How it works
The node takes the VHS_FILENAMES output from VideoHelperSuite's Video Combine, grabs the first file in that tuple, and uploads it with boto3 using the default AWS credential provider - the same chain as the rest of the AWS ecosystem: environment variables, ~/.aws/credentials, or an IAM role attached to the machine. It returns the destination as an s3://bucket/object string. Nothing else happens: no content-type magic, no signed URL generation, just an upload and a location.
The inputs that matter
- filenames (VHS_FILENAMES) - wire this from VideoHelperSuite's
Video Combine. This input type only exists if VHS is installed, so this node requires that pack. - s3_bucket (STRING) - the target bucket name. Required.
- s3_object_name (STRING, default
default/result.webp) - the key to write under. Set something meaningful per run; the default will happily overwrite itself on every execution. - s3_url (STRING, output) - the
s3://location. Feed it to anything that takes a string - including the pack's URL image loader.
Installing it
easy-comfy-nodes via ComfyUI Manager, plus ComfyUI-VideoHelperSuite for the VHS_FILENAMES type:
cd ComfyUI/custom_nodes
git clone https://github.com/wmatson/easy-comfy-nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
# restart ComfyUI
The pack installs boto3 as a dependency; no model downloads involved.
Where people get burned
- No AWS credentials = instant failure. The node leans entirely on the default provider chain. If your box has no
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY(or an IAM role), every run errors. Configure AWS first, then the node works. - Only the first file uploads. A VHS output can carry multiple files; this node silently uploads just the first one. For image sequences rendered to separate files, that's probably not what you want.
s3_object_namedefaults to a fixed key.default/result.webpmeans each run overwrites the last. Include something unique - a timestamp, a job id - or you'll be chasing "where did my result go."- Permissions matter. The bucket must allow the credentials to write. A 403 here reads as a mysterious failure, and it's almost always an IAM policy on the bucket, not a code bug.
It's a narrow node - video pipeline, AWS account, automation mindset. If that's you, it's the difference between "the file sat on the server" and "my pipeline finished and notified the world."
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| filenames | VHS_FILENAMES | — | |
| s3_bucket | STRING | — | |
| s3_object_name | STRING | default/result.webp | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| s3_url | STRING | — |