Nodes/ComfyUI Ino Nodes/Ino S3 Get Download URL
ComfyUI Node

Ino S3 Get Download URL

Presigned S3 URLs from the graph

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Get Download URL
    • success
    • message
    • download_url
    • filename
    enabledtrue
    s3_keyinput/example.png
    expires_in3600
    as_attachmentfalse
    filename
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}

    S3 buckets aren't public by default, which is the whole point - but sometimes you need to hand a file to someone without giving them the keys. That's what presigned URLs are for: a temporary, signed link that grants access to one object for a limited time. InoS3GetDownloadURL generates exactly that from inside a workflow, and returns the URL as a string you can wire anywhere - into an Ino Http Call to fetch the object, into an OpenAI vision node that needs a public URL, or out to a log so you can grab it yourself.

    The clever bit for workflow automation: instead of downloading the file and re-uploading it somewhere public, you can generate a link on the fly and pass that around. It's the "share results without making the bucket public" node.

    How it works

    Required inputs: enabled, s3_key (the object), expires_in (link lifetime in seconds, default 3600, max 7 days = 604800 - the tooltip is explicit about the ceiling), as_attachment (default False), and filename (default ""). Optional: s3_config.

    • as_attachment - when True, the link forces a download with a filename (the content-disposition: attachment behavior) instead of opening inline in a browser.
    • filename - the optional download filename; leave empty and it defaults to the object's basename. This is what shows up when someone actually saves the file.

    Outputs: success, message, download_url (the presigned link), and filename (the resolved name). 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

    Time is the thing to respect here. expires_in caps at 604800 seconds (7 days) - that's an S3 policy limit, not a pack quirk - and a link you generate this run is dead by the next run if the workflow sits idle. If you generate a URL in one execution and try to use it hours later, re-run the node. Also, presigned URLs are signed with your credentials, which is why they work without making the bucket public - but it also means anyone with the link has access for the lifetime you set, so keep expires_in tight for sensitive objects. On self-hosted endpoints (MinIO, Cloudreve, R2), make sure the endpoint URL is reachable from wherever the link will be opened - a URL that works from inside your ComfyUI box won't help someone on the other side of the internet if the endpoint is localhost.

    CategoryInoS3Helper

    Inputs (6)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    s3_keySTRINGinput/example.png
    expires_inINT36001–604800Link lifetime in seconds (max 7 days = 604800).
    as_attachmentBOOLEANfalse
    filenameSTRINGOptional download filename. Leave empty to default to the object's basename.
    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 (4)

    NameTypeDescription
    successBOOLEAN
    messageSTRING
    download_urlSTRING
    filenameSTRING