Nodes/ComfyUI Ino Nodes/Ino S3 Upload String
ComfyUI Node

Ino S3 Upload String

A string, straight to S3 — no temp file, no fuss

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Upload String
    • string
    • success
    • message
    • file_name
    • s3_string_path
    enabledtrue
    string
    save_as
    s3_path_key
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}
    unique_file_nametrue
    filename

    Most of what lands in S3 isn't images - it's metadata, configs, prompts, logs. InoS3UploadString is the node for those: it takes a string from your graph and uploads it directly to S3 as a text object, with no temp file written to disk. The "no temp file" part is the notable design choice; sibling upload nodes stage media through temp, but a string is small enough to go straight up. Wire a prompt, a JSON config, or a run's metadata into string, pick txt, json, or ini, and it's in the bucket.

    The output side is generous, too: it returns the string back (so you can keep chaining), the success flag, the generated filename, and the full S3 path - so whatever comes next in the workflow knows exactly where the object lives. It's a natural pairing with a metadata-collection chain: build your run's JSON in the graph, upload it here, and the object key feeds straight into a download node or a presigned URL generator.

    How it works

    Required inputs: enabled, string (the content), save_as (a dropdown: txt, json, or ini - controls the extension), and s3_path_key (the destination key). Optional: s3_config, unique_file_name (default True - when on, the node generates a unique name rather than using your filename), and filename.

    The unique_file_name toggle is the one to understand: with it True (default), every upload gets a unique name, which is what you want when each run's metadata must not clobber the last. Flip it to False and it uses the filename you provide instead, for the "always write to the same key" pattern.

    Outputs: string (pass-through), success, message, file_name (the final name), and s3_string_path (the full object key).

    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

    The unique_file_name default trips people who expect deterministic keys: leave it on and every run creates a new object, so don't rely on a fixed s3_string_path across runs - read the output each time. If you do want a stable key (e.g. "latest_config.json" that everything reads), turn it off and set filename. Also, save_as only controls the extension and content handling - it doesn't validate that your string is actually valid JSON when you pick json, so malformed JSON uploads happily and only bites you downstream when something tries to parse it. And s3_path_key with unique_file_name on still needs a valid path, so give it a folder prefix like runs/ rather than leaving it empty.

    CategoryInoS3Helper

    Inputs (7)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    stringSTRING
    save_asCOMBO3 options: txt, json, ini
    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

    Outputs (5)

    NameTypeDescription
    stringSTRING
    successBOOLEAN
    messageSTRING
    file_nameSTRING
    s3_string_pathSTRING