S3 n8n integrationAutomate S3 with n8n.
Your objects sit on MinIO, Wasabi or DigitalOcean Spaces, and a workflow needs to reach them. The S3 n8n integration covers 12 operations across 3 resources: buckets, files and folders. Nothing listens on its own, so another node starts the run. Built for teams running their own object storage.
Verified Trustpilot reviews · AI, automation & growth agency
What does the S3 n8n integration actually cover?
The S3 node talks to any S3-compatible storage that is not AWS: MinIO, Wasabi, DigitalOcean Spaces or Tigris. You give n8n an endpoint URL, a region and an access key pair, and the node then creates, reads and deletes buckets, files and folders from inside a workflow. For Amazon's own service n8n ships a separate AWS S3 node, and the two are not interchangeable: the credential shapes differ, so picking the wrong one is the first thing to check when a connection fails.
First scenario, a nightly export that leaves no trace on anyone's laptop. A Schedule Trigger fires, a query against Postgres returns the day's rows, the workflow assembles them into CSV text, and file.upload writes that text straight into a dated folder key using the File Content parameter. No binary handling, no local disk.
Second scenario, generated assets. An HTTP Request node fetches an image or a rendered document and hands it over as binary data, file.upload stores it under a predictable key, and the key goes into a tracking row in Google Sheets. This is the pattern behind the published S3 templates, which pair the node with HTTP Request and nothing else.
Third scenario, intake. A Webhook node receives a document from a form or a partner system, the file lands in a per-client bucket created earlier by bucket.create, and a message in Slack carries the resulting key so somebody can act on it. Uploads need the file to arrive as a data property from another node, such as Read/Write Files from Disk or HTTP Request.
When to reach for HTTP Request instead: the node exposes 12 operations, and that is the whole surface. Anything else your provider's S3 API offers is one HTTP Request node away, reusing the same credential through predefined authentication, which keeps the keys in one place.
Known limits worth planning around. There is no S3 trigger, so nothing here reacts to a new object by itself. There is no move or rename either, so relocating an object means file.copy then file.delete. Listing operations stop at Limit unless Return All is on, which matters on buckets holding thousands of keys. And on Wasabi, permissions have to go through the ACL dropdown, not the individual grant toggles. If object storage is new territory for the team, the n8n training covers credentials and expressions before you wire this to production data.
How do you connect S3 to n8n?
- 01
Create the access key on your provider
Every S3-compatible provider hands out a pair. On DigitalOcean Spaces it lives under Settings, then the API page, then the Spaces Keys tab, where Generate New Key gives you a Key and a Secret. On Tigris it is the Access Keys section of the console, where the identifier starts with
tid_and the secret withtsec_. That secret is shown once, so copy it before closing the page. - 02
Fill the S3 credential in n8n
Open Credentials in n8n, pick S3 and paste four values. S3 Endpoint is the URL of the storage backend, with
https://in front. Region is the region your bucket sits in, sometimes called the region slug, such asnyc3on Spaces orautoon Tigris. Then Access Key ID and Secret Access Key from the previous step. - 03
Set the two addressing toggles
Force Path Style switches the connection to path-style addressing for buckets. DigitalOcean Spaces and Tigris both expect it off, because they use the virtual-hosted format. Ignore SSL Issues lets n8n connect even when certificate validation fails, which is sometimes needed against a self-hosted MinIO with its own certificate. Leave it off otherwise. Save once and every workflow can select this credential.
The 12 operations of the S3 node
The S3 node exposes 12 operations across 3 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get Many | Delete | Copy | Download | Search | Upload |
|---|---|---|---|---|---|---|---|
| Bucket | ✓ | ✓ | ✓ | ✓ | |||
| File | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Folder | ✓ | ✓ | ✓ |
Operations index
Bucket
4 operationsCreate a bucket
bucket.createWhat you see in n8n
Notes & use cases
Creates a bucket on the storage backend behind the credential. It lands in the region set on that credential unless the call says otherwise.
Key parameters
- Name: the bucket name, often an expression such as
{{ $json.account_slug }}when one workflow provisions storage per account. - ACL: the canned ACL applied at creation, from Authenticated Read to Public Read Write. Private keeps the bucket closed to anonymous callers.
- Region: only needed when the bucket belongs somewhere other than the credential's region.
Delete a bucket
bucket.deleteWhat you see in n8n
Notes & use cases
Hands a bucket name to the server and the bucket goes away. There is no confirmation step in the node, so whatever the expression resolves to is what gets destroyed.
Key parameters
- Name: the name of the bucket to delete, typed in or pulled from an earlier item with
{{ $json.Name }}.
Get many buckets
bucket.getAllWhat you see in n8n
Notes & use cases
Returns the buckets the access key can see, one n8n item per bucket. Handy as a first step when a workflow has to know what already exists before it writes anything.
Key parameters
- Return All: on, n8n pages through the API until every bucket has come back; off, it stops at Limit.
- Limit: the ceiling on how many buckets come back when Return All is off.
Search a bucket
bucket.searchWhat you see in n8n
Notes & use cases
Filters the keys inside one bucket on the server side, which is as close to a query as this node gets. The response carries the matching object keys rather than their contents.
Key parameters
- Bucket Name: the bucket being searched.
- Prefix: limits the answer to keys starting with this string, such as
invoices/2025/. - Delimiter: the character used to group keys, which is how a flat key space reads like folders.
- Start After: the key to start listing from, useful for resuming a long scan.
File
5 operationsCopy a file
file.copyWhat you see in n8n
Notes & use cases
Duplicates an object from one location to another without the bytes travelling through n8n. Both paths start with a slash and the bucket name, then the object key.
Key parameters
- Source Path: bucket and key of the original, in the form
/bucket/my-image.jpg. - Destination Path: where the copy goes, same format, for example
/bucket/my-second-image.jpg. - Metadata Directive: Copy keeps the source metadata, Replace swaps in what the request provides.
- Storage Class: the class the copy is written to, from Standard down to Deep Archive.
Delete a file
file.deleteWhat you see in n8n
Notes & use cases
Targets one object by its key and removes it from the bucket. On a versioned bucket the call can aim at a specific version instead of the current one.
Key parameters
- Bucket Name: the bucket holding the object.
- File Key: the full key of the object, folder prefix included.
- Version ID: an optional field in Options that points the deletion at one version.
Download a file
file.downloadWhat you see in n8n
Notes & use cases
Pulls one object out of the bucket and hands it to the rest of the workflow as binary data, ready for a node that emails, parses or re-uploads it.
Key parameters
- Bucket Name: where the object lives.
- File Key: the key to fetch, typically
{{ $json.Key }}coming from Get many files. - Put Output File in Field: the name of the output binary field the file is placed in, which the next node has to point at.
Get many files
file.getAllWhat you see in n8n
Notes & use cases
Walks the contents of a bucket and returns one item per object, with its key and metadata. Pair it with Download a file when the workflow needs the bytes too.
Key parameters
- Bucket Name: the bucket to list.
- Folder Key: narrows the listing to one folder instead of the whole bucket.
- Fetch Owner: off by default in the listing response, turn it on to get the owner field on each key.
- Return All: on, every object comes back; off, Limit caps the batch.
Upload a file
file.uploadWhat you see in n8n
Notes & use cases
Writes a file into the bucket, either from a binary field produced upstream or from text typed into the node. This is the operation most S3 workflows are built around.
Key parameters
- Bucket Name: the destination bucket.
- File Name: the name the object takes, such as
hello.txt. - Input Binary Field: the input binary field holding the file, fed by Read/Write Files from Disk or HTTP Request.
- Binary File: off, the node uses File Content, the text you provide, instead of a binary field.
- ACL: on Wasabi, permissions must be set through this dropdown rather than the grant toggles.
Folder
3 operationsCreate a folder
folder.createWhat you see in n8n
Notes & use cases
Folders in S3 are a naming convention rather than real directories, and this operation writes the key that makes one show up in the console and in listings.
Key parameters
- Bucket Name: the bucket the folder goes into.
- Folder Name: the folder's own name, without the parent path.
- Parent Folder Key: the folder you want to create this one inside, which is how nesting is expressed.
- Storage Class: from Standard to Reduced Redundancy, depending on what gets stored there.
Delete a folder
folder.deleteWhat you see in n8n
Notes & use cases
Removes a folder from a bucket by its key. Since folders are keys, the operation is about the structure rather than about the individual objects a workflow may have put there.
Key parameters
- Bucket Name: the bucket concerned.
- Folder Key: the key of the folder to drop, parent path included.
Get many folders
folder.getAllWhat you see in n8n
Notes & use cases
Lists the folders inside a bucket, one item each, so a workflow can loop over them without knowing the structure ahead of time.
Key parameters
- Bucket Name: the bucket to explore.
- Folder Key: restricts the answer to what sits under one folder.
- Return All: on, the node pages through everything; off, Limit sets the maximum returned.
- Fetch Owner: adds the owner field to each key in the result.
Need help automating S3 with n8n?
A person reads every message.