Nodes/Duanyll Nodepack/Create S3 Client
ComfyUI Node

Create S3 Client

Wiring object-storage uploads into ComfyUI

By Duanyll·Created about a year ago·Updated 4 months ago· 2
Create S3 Client
    • S3_CLIENT
    endpoint_urlhttps://s3.us-west-004.backblazeb2.com
    bucket_namemy-comfyui-bucket
    regionus-west-004
    access_key_idYOUR_ACCESS_KEY_ID
    secret_access_keyYOUR_SECRET_ACCESS_KEY
    public_url_basehttps://f004.backblazeb2.com/file/my-comfyui-bucket

    Create S3 Client is the setup node for the pack's cloud-upload side: it collects an S3-compatible endpoint's credentials and connection details into a single S3_CLIENT object that the sibling Upload Image to S3 node then uses. It does zero uploading itself. Think of it as filling in a config form once and handing the finished config object down the wire.

    Why would a ComfyUI workflow touch S3 at all? Because generating on a box with storage but uploading to a shared bucket is a real production pattern. Render on a local GPU machine, ship the finished images to an S3-compatible bucket (Backblaze B2, MinIO, Cloudflare R2, AWS) so a website or another service can pick them up. If you've ever run a batch generation pipeline that ends in "and now put the results where the app can see them," this is the handoff.

    The inputs

    Every field is a string, and they're exactly what an S3 client config needs:

    • endpoint_url - the S3 endpoint. Defaults to Backblaze B2's https://s3.us-west-004.backblazeb2.com, which tells you the author's default is B2. Point it at any S3-compatible endpoint.
    • bucket_name / region - your bucket and its region (default us-west-004).
    • access_key_id / secret_access_key - your keys. The secret field is rendered as a password input, which is a nice touch.
    • public_url_base - the public URL prefix that maps to the bucket (default https://f004.backblazeb2.com/file/my-comfyui-bucket), used to build publicly shareable links after upload.

    One output: S3_CLIENT, which feeds Upload Image to S3.

    Install

    The pack standard:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Duanyll/duanyll_nodepack
    cd duanyll_nodepack && pip install -r requirements.txt
    

    or ComfyUI Manager → "Duanyll Nodepack" → install → restart. The node itself is pure config (a dict under the hood), but the pack's requirements pull in OpenCV, kornia, insightface, matplotlib, and the Volcengine SDK regardless - and the S3 upload code speaks raw requests, so no boto3 dependency to worry about.

    Gotchas

    Your credentials live in plain text in the workflow JSON. If you save workflows with secrets baked in and share them, you're leaking your keys - ComfyUI has no built-in secret handling for this, so use a dedicated bucket or pre-signed scoped credentials. And the defaults are Backblaze-shaped, so if you're on AWS or MinIO, every one of the six fields probably needs to change. This is one of those nodes that's quietly dangerous in the wrong hands and quietly useful in the right ones: for a personal automation where a render box uploads to your own bucket, it's the shortest path between generation and the internet.

    Categoryduanyll/web

    Inputs (6)

    NameTypeDefaultDescription
    endpoint_urlSTRINGhttps://s3.us-west-004.backblazeb2.com
    bucket_nameSTRINGmy-comfyui-bucket
    regionSTRINGus-west-004
    access_key_idSTRINGYOUR_ACCESS_KEY_ID
    secret_access_keySTRINGYOUR_SECRET_ACCESS_KEY
    public_url_baseSTRINGhttps://f004.backblazeb2.com/file/my-comfyui-bucket

    Outputs (1)

    NameTypeDescription
    S3_CLIENTS3_CLIENT