Save Image To Cloud
Save Image To Cloud — your outputs end up in a bucket, not on your disk
- images
- urls
This is the node for the "my outputs should not live on this machine" workflow. Save Image To Cloud is a drop-in replacement for ComfyUI's built-in Save Image, except instead of writing a PNG into ComfyUI/output/, it uploads to an Aliyun OSS or AWS S3 bucket and hands you back the URL. The niche is real if you run ComfyUI on a rented GPU box that you don't trust to keep files, or you want renders to land somewhere the whole team - or a website - can read without you SSHing in to grab them.
One warning before you get excited: the README will lie to you a little. It documents access_key_id and access_key_secret inputs that don't exist on the actual node. The credentials come from environment variables instead (more on that below), so if you try to set up the node exactly like the README shows, it won't match.
How it works
Feed it an images tensor - same thing that comes out of VAE Decode - and it converts each image to a PNG in memory, then pushes it to your bucket via the oss2 (OSS) or boto3 (S3) SDK. It also does the standard ComfyUI trick of embedding the workflow's prompt and extra PNG info into the file's metadata (disabled only if you launched ComfyUI with --disable-metadata). Filenames follow the pattern {prefix}{filename_prefix}_{timestamp}_{batch}.png, so you get a fresh timestamped file every run instead of overwriting.
The one output, urls, is a JSON string of objects - [{url, filename, timestamp, storage_type}] - not the semicolon-separated list the README claims. Wire it into a text display node to see the URLs, or into any node that accepts string input if you're scripting around it.
The inputs that matter
- storage_type -
ossors3. Pick your provider. - endpoint - OSS: like
oss-cn-beijing.aliyuncs.com(no scheme). S3: optional, e.g.https://s3.amazonaws.com; leave blank for standard S3. - bucket - your bucket name.
- prefix / filename_prefix - the storage path and the filename stem; together they decide where the file lands.
- region - S3 only, defaults to
us-east-1.
The big gotcha: credentials live in environment variables
There are no key inputs on this node, which is a security win - your access keys can never get baked into a saved workflow JSON or the PNG metadata (a real worry with cloud nodes that take keys as widgets). But it means setup is a step most people don't expect:
# for OSS
export ALIYUN_ACCESS_KEY_ID=your_key_id
export ALIYUN_ACCESS_KEY_SECRET=your_secret
# for S3
export AWS_ACCESS_KEY_ID=your_key_id
export AWS_SECRET_ACCESS_KEY=your_secret
Missing them raises Missing required environment variables for oss/s3 storage. This is by far the most common "why is it erroring" moment, so set them in whatever launches ComfyUI, then restart.
Install
Via ComfyUI Manager - search "ComfyUI-CloudStorage" and install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/philipy1219/ComfyUI-CloudStorage
pip install oss2 boto3
No model downloads - the dependencies are just the two SDKs. Remember that a returned URL only works if the bucket actually lets you read it; a private bucket gives you a URL that 403s in a browser, so set the access policy you actually want.
If you need a dozen providers, progress bars, and local-fallback saves, ComfyUI Save/Load Extended (bytes2pro) is the heavier, more polished alternative. This pack's whole personality is "OSS or S3, nothing else, minimal friction." That's plenty if OSS/S3 is what you have.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Images to be saved | |
| storage_type | COMBO | oss | 2 options: oss, s3 |
| filename_prefix | STRING | ComfyUI | Prefix for the filename |
| endpoint | STRING | — | |
| bucket | STRING | — | |
| prefix | STRING | comfyui/ | Storage path prefix |
| regionopt | STRING | us-east-1 | Region for S3 storage only |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| urls | STRING | — |