Download File from S3
Pull anything back out of the bucket
- local_path
DownloadFileS3 is the fetch-it-back half of the ComfyS3 file shuttle. Where UploadFileS3 pushes local files up to your bucket, this node pulls any object back down to disk - no command line, no boto3 script, no fishing around in the S3 console. You type a key, it lands on your machine, done.
It's the node you reach for when the bucket is the shared source of truth and your local box is just a worker. Someone uploaded a dataset, a reference image, or a model you need - pull it with this, then feed the result into whatever consumes files. A genuinely common pattern is shuttling a freshly trained LoRA: train on machine A, upload with UploadFileS3, download into your model folder on machine B with this node, and generate.
How it works
Mechanically it's the simplest node in the pack. It takes two string inputs:
- s3_path - the object key in the bucket, e.g.
output/MyLoRA.safetensors(defaultinput/example.png). - local_path - where the file should land, relative to your ComfyUI root (default
input/example.png). The node creates the folder if it doesn't exist, so you can download straight into a subdirectory without pre-creating it.
On run it calls boto3's download_file, returns local_path (the STRING it just wrote) so downstream nodes can reference it, and prints where it landed in the console.
A couple of things to internalize about the defaults. Paths are relative to the ComfyUI root - type models/loras/mylora.safetensors and it'll appear there. And this node is only about bytes: it doesn't check that the thing is an image, doesn't load it, doesn't return tensors. If you want an image straight into the graph, use LoadImageS3 instead, which returns IMAGE and MASK. This one just puts a file on disk and hands you back the path.
Installing and configuring the pack
ComfyS3 installs like any custom node - Manager search for "ComfyS3" (author TemryL), or:
cd ComfyUI/custom_nodes
git clone https://github.com/TemryL/ComfyS3
cd ComfyS3
pip install -r requirements.txt # boto3==1.34.32, python-dotenv==1.0.1
Restart, then create .env in custom_nodes/ComfyS3/:
S3_REGION=us-east-1
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key
S3_BUCKET_NAME=your-bucket
S3_INPUT_DIR=input
S3_OUTPUT_DIR=output
S3_ENDPOINT_URL and S3_ADDRESSING_STYLE are optional extras if you're pointed at S3-compatible storage (MinIO, R2, Backblaze) instead of AWS proper.
Common issues
The S3 client is constructed at node load, so a missing or wrong .env surfaces immediately as ComfyS3 - ERROR - Missing required S3 environment variables. in the console - every node in the pack fails until you fix it. If the object key doesn't exist you'll get a botocore error on run; there's no friendly "file not found," just the AWS exception logged.
Downloads are read-only - nothing gets deleted from the bucket, and there's no overwrite protection beyond the file system's own behavior, so an existing local file with the same name just gets replaced. And keep in mind those plaintext AWS keys in .env: this is a small open-source node that only moves bytes, but it's running with full OS access like every custom node, so don't expose your ComfyUI publicly while the credentials are sitting in the folder.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| s3_path | STRING | input/example.png | — |
| local_path | STRING | input/example.png | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| local_path | STRING | — |