Nodes/ComfyUI Ino Nodes/Ino S3 Download File
ComfyUI Node

Ino S3 Download File

Fetch one file from S3 into a local folder — with smart skip logic

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Download File
    • success
    • message
    • rel_path
    • abs_path
    enabledtrue
    s3_keyinput/example.png
    parent_folder
    folders3download/
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}
    overwritefalse

    The bread-and-butter S3 operation, done properly: InoS3DownloadFile fetches a single object from a bucket and saves it into a local folder under ComfyUI's input, output, or temp trees. It's the node you put at the front of a workflow that needs a file that's not on the machine yet - a reference image, a config, a seed batch - and it's designed for repeat runs, because by default it skips the download when the local file already matches what's in S3.

    That skip behavior is the detail that makes it production-usable. The overwrite tooltip spells out the mechanism: when overwrite is False (the default), it compares the local file against the remote using a "sha256/md5/size cascade" - hash check first, falling back through md5 to size. Run the same workflow ten times and you pay for the download once; every subsequent run just confirms nothing changed.

    How it works

    Required inputs: enabled, s3_key (the object path, e.g. input/example.png), parent_folder (input/output/temp), and folder (the local subfolder, default s3download/). Optional: s3_config (the JSON credentials string) and overwrite.

    Outputs follow the pack's standard file-node contract: success, message, rel_path, and abs_path - the last two being where the file actually landed, so you can wire them into a loader that takes a path.

    Credentials: paste the JSON into s3_config, or leave it empty and use the env vars S3_ACCESS_KEY, S3_ACCESS_SECRET, S3_BUCKET_NAME, S3_ENDPOINT_URL, S3_REGION_NAME. Env vars beat embedding keys in workflows.

    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 and restart. Needs inopyutils (the pack's S3 layer) and a current V3-schema ComfyUI.

    Common issues

    Path mismatch is the top gotcha: parent_folder + folder must resolve to where you actually want the file, and folder is relative to the base. The abs_path output tells you the truth - check it if a downstream loader can't find the file. If you changed the remote file and local keeps coming back stale, that's the skip logic working as designed: flip overwrite to True for a forced refresh, or delete the local copy. And remember S3 keys are case-sensitive; Example.png and example.png are different objects, and a mistyped key gives you a clean success: False rather than a mystery.

    CategoryInoS3Helper

    Inputs (6)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    s3_keySTRINGinput/example.png
    parent_folderCOMBO3 options: input, output, temp
    folderSTRINGs3download/
    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
    overwriteoptBOOLEANfalseIf False (default), skip the download when the local file already matches the remote (sha256/md5/size cascade).

    Outputs (4)

    NameTypeDescription
    successBOOLEAN
    messageSTRING
    rel_pathSTRING
    abs_pathSTRING