Nodes/S3 Connector/S3 Upload Image (Full Path)
ComfyUI Node

S3 Upload Image (Full Path)

When your filename is built at runtime, use this one

By haranesh·Created 7 months ago·Updated 5 months ago· 1
S3 Upload Image (Full Path)
  • images
  • s3_url
  • path
  • image
full_path

S3 Upload Image (Full Path) is the same uploader as the plain S3 Upload Image, minus one text field. Instead of separate folder_path and file_name inputs, it takes a single full_path string like portraits/2024/generated_art.png and uploads there. Same credentials, same .env config, same S3 key construction, same PNG conversion - the only real difference is ergonomics.

So why does it exist? Because a single string is much easier to build dynamically. If you're composing an output path at runtime - say, joining a date prefix, a run ID from the pack's GetJobID node, or a value from a text node - one full path string beats stitching together two inputs. It's also easier to reason about: what you type is essentially what lands in the bucket (modulo the prefix). The plain two-field version reads nicer for hand-typed fixed paths; this one shines when the path is computed.

The inputs and outputs

Exactly two inputs:

  • images (IMAGE) - the tensor to upload.
  • full_path (STRING) - the complete S3 path including filename, e.g. jobs/2026-08/out.png. Required, and it gets stripped of leading/trailing slashes. If it has no extension, .png is appended.

Outputs match the plain uploader: s3_url, path (the real S3 key, prefix included), and image passthrough. Batches get _0, _1, … suffixes inserted before the extension, and the node returns the last file's URL and key. It's marked as an output node, and since it never saves locally, keep a SaveImage in the graph if you want a local copy.

Installing and configuring

Same pack, same drill as the rest of S3 Connector. ComfyUI Manager (search "S3 Connector") or:

cd ComfyUI/custom_nodes
git clone https://github.com/haranesh/comfyui-s3-connector
cd comfyui-s3-connector
pip install -r requirements.txt
cp .env.example .env

Then set S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, and S3_BUCKET_NAME (required). .env goes in custom_nodes/comfyui-s3-connector/.env - the node loads it from its own directory. S3_REGION defaults to us-east-1; S3_ENDPOINT_URL stays empty for AWS and gets filled in for MinIO, DigitalOcean Spaces, or Cloudflare R2. S3_PREFIX prepends to every key if you want a common root like comfyui/outputs/. Restart ComfyUI after. Only dependencies are boto3, python-dotenv, and Pillow - light, no models.

Where people get burned

Same failure modes as its sibling: the constructed s3_url assumes a publicly readable bucket (the node formats the URL itself and never verifies it), and alpha is stripped because everything goes up as RGB PNG. One thing that trips people on this variant specifically: since you supply the whole path, a typo in the folder part means the file lands somewhere you won't look, and the prefix is still applied on top. If your full_path already includes a folder that mirrors the prefix, you'll get double-nesting. Keep the prefix in one place - either in .env or in your path string, not both.

CategoryS3 Connector

Inputs (2)

NameTypeDefaultDescription
imagesIMAGE
full_pathSTRING

Outputs (3)

NameTypeDescription
s3_urlSTRING
pathSTRING
imageIMAGE