Nodes/ComfyUI Ino Nodes/Ino S3 Upload Folder
ComfyUI Node

Ino S3 Upload Folder

Sync a whole results folder to S3 — concurrent uploads plus a verification pass

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Upload Folder
    • success
    • message
    • rel_path
    • abs_path
    • total_files
    • uploaded_successfully
    • failed_uploads
    • errors
    enabledtrue
    s3_key
    parent_folder
    folder
    delete_localtrue
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}
    max_concurrent8
    verify_with_s3false

    When a batch finishes, the artifacts don't usually come out one file at a time - they come out as a folder full of renders, logs, and metadata. InoS3UploadFolder pushes an entire local folder up to S3 with concurrent uploads (default 8 threads), and it's the piece that makes "run a big batch locally, archive everything to the bucket, delete the local copy" a single graph. delete_local defaults to True, so a successful run doubles as disk cleanup - which is exactly what you want on a rented cloud box where disk is billed like it's gold.

    The verification option is what separates it from a naive loop. verify_with_s3 (default False) does a post-upload check against the bucket, and the outputs give you a proper accounting: how many files, how many uploaded successfully, how many failed, and the error strings. For an overnight batch, that report is your proof of what actually made it to the cloud.

    How it works

    Required inputs: enabled, s3_key (the destination prefix in the bucket), parent_folder, folder (the local folder to upload), and delete_local (default True). Optional: s3_config, max_concurrent (1–16, default 8), and verify_with_s3 (default False).

    Outputs: success, message, rel_path/abs_path, then the report: total_files, uploaded_successfully, failed_uploads, and errors.

    Credentials via s3_config JSON or the env vars (S3_ACCESS_KEY, S3_ACCESS_SECRET, S3_BUCKET_NAME, S3_ENDPOINT_URL, S3_REGION_NAME).

    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. Needs inopyutils and a current V3-schema ComfyUI.

    Common issues

    delete_local: True plus a verification mismatch is the nightmare scenario to think through: deletion happens on upload success, so if you flip on verify_with_s3 and it flags a discrepancy after local files are gone, you've lost your only local copy of anything that failed verification. On anything you care about, run the first upload with delete_local: False and verify_with_s3: True, check failed_uploads and errors, and only then let it clean up. Also watch the prefix semantics: s3_key should end with a trailing slash if you want a clean folder-like prefix (results/), and objects keep their relative paths under it. And note the verification is a sync check, not a byte-for-byte re-upload - files that match are simply confirmed, which is the efficient behavior you want.

    CategoryInoS3Helper

    Inputs (8)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    s3_keySTRING
    parent_folderCOMBO3 options: input, output, temp
    folderSTRING
    delete_localBOOLEANtrue
    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
    max_concurrentoptINT81–16
    verify_with_s3optBOOLEANfalse

    Outputs (8)

    NameTypeDescription
    successBOOLEAN
    messageSTRING
    rel_pathSTRING
    abs_pathSTRING
    total_filesINT
    uploaded_successfullyINT
    failed_uploadsINT
    errorsSTRING