Ino S3 Verify File
Did that upload actually land, and is it intact? Ask the node.
- success
- message
- rel_path
- abs_path
- exists_remote
- sizes_match
- verify_method
- local_size
- remote_size
- etag
- md5_match
- sha256_match
Uploads fail. Network blips, wrong bucket, silently truncated objects - and in an automated pipeline, a failed upload is exactly the kind of thing you want to catch, not discover three batches later. Ino S3 Verify File is the pack's answer to "did it make it, and is it the same file?" It compares a local file against an object in S3 and reports existence, size, and optionally checksums - a proper integrity gate for pipelines that ship results to object storage.
It's part of ComfyUI Ino Nodes (nobandegani/ComfyUI-InoNodes), the 125+-node V3-schema pack, and one of its 16 S3 helpers. It's the grown-up counterpart to the upload nodes: upload, then verify, then mark the job done.
How it works
Inputs:
enabled- the pack-wide toggle.s3_key- the object key in the bucket to compare against.parent_folder/folder/filename- locate the local file, using the same unified file-interface as the rest of the pack (dropdown forinput/output/temp, plus subfolder and filename).s3_config- optional; config string or env vars.use_md5anduse_sha256- the two optional integrity checks. Both default off; turn on the one you want (or both) for content-level verification rather than just existence and size.
The output list is almost comically thorough: success, message, rel_path, abs_path, then exists_remote (is it there at all?), sizes_match, verify_method (what you actually compared - e.g. size, md5, sha256), local_size, remote_size, etag, md5_match, and sha256_match. For a beginner that's a lot of sockets, but you'll mostly care about two: success and exists_remote.
When you'd use it
The textbook pattern is the tail of an upload pipeline: Ino S3 Upload Image pushes the file, then Ino S3 Verify File checks it, and your workflow only marks the job complete if success comes back True. The etag output is also handy if you're logging or auditing what actually got stored - S3's ETag is usually an MD5 of the object, so it doubles as a lightweight fingerprint.
Common issues
- Hash checks are opt-in. With both off, you're only verifying existence and size - good for a quick check, not for proving content integrity. Turn on
use_sha256if the bytes must match exactly. successvsexists_remote.successreflects whether the verification ran without errors;exists_remotetells you whether the object is actually there. An object that exists but has wrong size should read assuccess: Truebutsizes_match: False. Don't wire the wrong output into your gate.
Installing it
ComfyUI Ino Nodes installs like any custom node pack:
- ComfyUI Manager (easiest): search for "ComfyUI Ino Nodes", install, restart.
- Manual:
Then restart ComfyUI.cd ComfyUI/custom_nodes git clone https://github.com/nobandegani/ComfyUI-InoNodes.git cd ComfyUI-InoNodes pip install -r requirements.txt
Requires inopyutils and a current ComfyUI. It's a niche pack with near-zero community footprint, but for a "trust but verify" step at the end of an S3 pipeline, this node is exactly the safety net you want.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | true | — |
| s3_key | STRING | — | |
| parent_folder | COMBO | 3 options: input, output, temp | |
| folder | STRING | — | |
| filename | STRING | — | |
| s3_configopt | STRING | {"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""} | you can leave it empty and pass it with env vars |
| use_md5opt | BOOLEAN | false | — |
| use_sha256opt | BOOLEAN | false | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| success | BOOLEAN | — |
| message | STRING | — |
| rel_path | STRING | — |
| abs_path | STRING | — |
| exists_remote | BOOLEAN | — |
| sizes_match | BOOLEAN | — |
| verify_method | STRING | — |
| local_size | INT | — |
| remote_size | INT | — |
| etag | STRING | — |
| md5_match | BOOLEAN | — |
| sha256_match | BOOLEAN | — |