Nodes/ComfyUI Ino Nodes/Ino S3 Upload Audio
ComfyUI Node

Ino S3 Upload Audio

Send generated audio straight to S3 as MP3 — no temp-file juggling

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Upload Audio
  • audio
  • audio
  • success
  • message
  • file_name
  • s3_audio_path
enabledtrue
s3_path_key
s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}
unique_file_nametrue
filename
delete_localtrue
quality128k

If you run ComfyUI as part of an actual pipeline - an app backend, a batch job that lands results in object storage - the last mile is usually the annoying part: generate, save locally, script a separate upload. Ino S3 Upload Audio collapses that into one node: it takes an AUDIO tensor, saves it as an MP3, uploads it to your S3 bucket, and hands you back the object key. One less cron job to maintain.

The README frames the whole S3 side of this pack around cloud storage workflows, and this node is the audio-shaped piece of it: "Saves audio as MP3 then uploads it to S3." It's an output node, so it sits at the end of an audio branch.

How it works

The flow is: encode your incoming audio to MP3 (quality selectable), write it to a temp file, upload that file to S3, and optionally delete the local copy once the upload succeeds. The upload target is built from an s3_path_key prefix plus the filename - so s3_path_key of results/audio with a unique filename becomes something like results/audio/Ab3x...mp3.

The inputs that matter

  • audio - the AUDIO tensor to upload.
  • s3_path_key - the folder prefix in the bucket.
  • s3_config - optional JSON of credentials. The tooltip says it plainly: leave it empty and pass credentials via env vars instead (S3_ACCESS_KEY, S3_ACCESS_SECRET, S3_ENDPOINT_URL, S3_REGION_NAME, S3_BUCKET_NAME). For most people env vars are the right call - you don't want keys baked into every workflow file.
  • unique_file_name - default true. On, it generates a collision-proof name (base64 timestamp); off, it uses your filename. On for anything you don't want overwritten.
  • filename - only used when unique_file_name is off.
  • delete_local - default true: clean up the temp MP3 after a successful upload.
  • quality - V0, 128k, or 320k. 128k is the default; bump to 320k if the audio matters.

Outputs: audio (passes your audio through, so you can keep wiring it onward), success (BOOLEAN), message, file_name (the local MP3 name), and s3_audio_path (the full object key - the one you actually care about).

Installing it

Part of ComfyUI-InoNodes. ComfyUI Manager → search "ComfyUI Ino Nodes" → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/ComfyUI-InoNodes
cd comfyui_ino_nodes
pip install -r requirements.txt

Restart after. Then set your S3 env vars (or build an InoS3Config node) and you're done - no other keys involved.

Common issues

Most failures here are credentials, not code. If success comes back false with a message about the key or bucket, check that S3_BUCKET_NAME matches the bucket you're writing to and that the key/secret have write permission on it - the pack validates the s3_path_key early, but a bad bucket name still fails at upload time. Second, remember delete_local defaults to true: if you wanted a local copy for preview, flip it off before the run, not after the file's gone. And a subtle one: with unique_file_name on, your filename is ignored, so don't be confused when the object key doesn't match what you typed.

CategoryInoS3Helper

Inputs (8)

NameTypeDefaultDescription
enabledBOOLEANtrue
audioAUDIO
s3_path_keySTRING
s3_configoptSTRING{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}you can leave it empty and pass it with env vars
unique_file_nameoptBOOLEANtrue
filenameoptSTRING
delete_localoptBOOLEANtrueDelete the locally saved MP3 after a successful S3 upload.
qualityoptCOMBO128kMP3 encoding quality.

Outputs (5)

NameTypeDescription
audioAUDIO
successBOOLEAN
messageSTRING
file_nameSTRING
s3_audio_pathSTRING