Nodes/ComfyUI Ino Nodes/Ino S3 Download Audio
ComfyUI Node

Ino S3 Download Audio

Pull an audio file out of S3 and get a real AUDIO tensor on the wire

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Download Audio
    • success
    • message
    • audio
    enabledtrue
    s3_keyinput/example.wav
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}

    Cloud GPU work has a rhythm: you rent a box, run your job, and everything that mattered lives in object storage. If your workflow needs audio - a voiceover you generated, a reference clip, a backing track - sitting in an S3 bucket, InoS3DownloadAudio is how it gets into ComfyUI as something you can actually use. The important detail is that it doesn't just save a file somewhere; it downloads from S3 and returns a native AUDIO tensor, the same type ComfyUI's own audio nodes emit. That means it plugs straight into audio preview, processing, or whatever consumes audio in your graph without you hand-loading a file path.

    It's part of the InoS3Helper family, which is built for exactly this pattern: media files stay in S3, and these nodes turn them into native ComfyUI types on demand.

    How it works

    Required inputs: enabled and s3_key - the object path in the bucket, e.g. input/example.wav. Optional: s3_config.

    The s3_config field deserves a closer look because it's the pack's consistent convention: it's a JSON string with access_key_id, access_key_secret, bucket_name, endpoint_url, and region_name. The tooltip says it plainly - "you can leave it empty and pass it with env vars." Set these instead and they win: S3_ACCESS_KEY, S3_ACCESS_SECRET, S3_BUCKET_NAME, S3_ENDPOINT_URL, S3_REGION_NAME. Env vars are the right call for shared workflows, since you don't want keys living in a workflow JSON.

    Mechanically, the node downloads the object to a temp folder with a unique filename, then loads it through ComfyUI's own LoadAudio, which is why the output is a genuine AUDIO tensor rather than a path string.

    Outputs: success, message, and audio (the AUDIO tensor - or null if the download or load failed).

    Installing it

    Part of the 125+-node ComfyUI-InoNodes pack by nobandegani:

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

    Or search "ComfyUI Ino Nodes" in ComfyUI Manager, install, restart. V3 schema pack - keep ComfyUI current. The actual S3 client lives in the pack's inopyutils dependency.

    Common issues

    Almost every failure here is credentials or paths. s3_key must exist in the bucket exactly as typed - a wrong key gives you success: False and an error message, which is at least honest. If auth fails, check that your env vars are set in the environment ComfyUI actually starts from (not your shell's other terminal), and remember the endpoint matters: MinIO, Cloudflare R2, and Cloudreve all speak S3 but each has its own endpoint URL. Audio load failures after a successful download usually mean the file isn't actually an audio format ComfyUI's LoadAudio understands - mp3, wav, and similar are the safe bets. And it's a download node, not a sync node: every run fetches fresh from S3, so don't wire it inside a tight loop if you're paying per request.

    CategoryInoS3Helper

    Inputs (3)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    s3_keySTRINGinput/example.wav
    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

    Outputs (3)

    NameTypeDescription
    successBOOLEAN
    messageSTRING
    audioAUDIO