Nodes/easy-comfy-nodes/S3 Upload (EZ)
ComfyUI Node

S3 Upload (EZ)

Upload a rendered video to S3 and hand back the URL

By wmatson·Created 3 years ago·Updated about a year ago· 18
S3 Upload (EZ)
  • filenames
  • s3_url
s3_bucket
s3_object_namedefault/result.webp

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_name defaults to a fixed key. default/result.webp means 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."

CategoryVideo

Inputs (3)

NameTypeDefaultDescription
filenamesVHS_FILENAMES
s3_bucketSTRING
s3_object_nameSTRINGdefault/result.webp

Outputs (1)

NameTypeDescription
s3_urlSTRING