Attome S3 Load Text
Pull prompts, captions, and configs out of your bucket
- s3_config
- text
Sometimes the thing your workflow needs isn't an image - it's a string. Attome S3 Load Text fetches a text file from an S3 bucket and hands it to ComfyUI as a plain STRING. That sounds trivial until you think about what you can do with it: load prompts from a shared bucket so a team runs the same generation prompts, pull captions for a training pipeline, read a JSON config that drives the rest of your graph, or grab LoRA trigger-word lists without editing nodes by hand.
It's one of nine nodes in Comfyui_Attome_S3, and it's about as simple as the pack gets. You give it a key, it runs get_object, decodes the bytes, and out comes text.
Inputs and outputs
s3_key(required) - object path in the bucket, e.g.prompts/sdxl_style.txt.s3_config(optional) - from the Attome S3 Config node, or skip it and let the pack use the credentials in itsenv.txt.encoding(optional) - defaults toutf-8, which is right for almost everything. Change it if you're pulling a legacy file that's actually latin-1 or similar.- Output:
text- a single STRING.
One behavior worth knowing: if s3_key is empty, you get back an empty string rather than an error. Same pattern as the pack's other load nodes - it lets you make a text resource optional in a workflow without the graph falling over. Useful if you want a "if a prompt file exists, use it, otherwise use the default" pattern that doesn't require branching nodes.
Install
It's the same story as every node in the pack - ComfyUI Manager can install it (search "Comfyui_Attome_S3"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/attome-ai/Comfyui_Attome_S3
cd Comfyui_Attome_S3
pip install -r requirements.txt
Then restart ComfyUI. No models to download, and for this node specifically the only dependency that truly matters is boto3.
Gotchas
The load failures you'll actually hit are the network kind, not the code kind: Access Denied (the IAM user needs s3:GetObject on the bucket) or a wrong region/endpoint_url for MinIO or R2. Less obvious: the node decodes the whole file, so a huge text file means a full download every execution - fine for prompts and captions, silly for a 50 MB log. And since the string flows straight into whatever node is next, an empty file gives you an empty string, which some downstream nodes treat as "no prompt" and others quietly choke on. It's a utility node, not a glamorous one - but when you need a shared prompt source, it's the difference between editing buckets and editing files.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| s3_key | STRING | path/to/file.txt | — |
| s3_configopt | S3_CONFIG | — | |
| encodingopt | STRING | utf-8 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |