Reference · Tools

AWS S3

Manage buckets, files, and folders in Amazon S3 and S3-compatible storage services. Supports upload, download, copy, delete, and listing operations with full encryption, ACL, and storage class support.

Action (binary) Data & Storage v1 Binary data

The AWS S3 node lets you manage buckets, files, and folders in Amazon S3 directly from a BusyBot workflow. You can upload files generated upstream, download objects as binary data for further processing, copy or delete files, and list bucket contents — making it practical to build pipelines like automated report archiving or file-sync workflows between services.

Node type
Action (binary)
Parameters
44
Outputs
Output, Error
Credentials
AWS

AWS S3

Manage buckets, files, and folders in Amazon S3

Overview

The AWS S3 tool provides full access to Amazon S3 cloud storage. It supports three resource types: Bucket (create, delete, getAll, search), File (copy, delete, download, getAll, upload), and Folder (create, delete, getAll). File download produces binary data attached to the output item. File upload reads binary data from an upstream item or accepts plain text content. Uses the @aws-sdk/client-s3 package for all S3 operations with automatic SigV4 signing.

Category: Data & Storage
Tool Name: aws_s3
Version: 1

Appearance: Icon: lucide-HardDrive | Color: #FF9900

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires AWS credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Bucketbucket
Filefile
Folderfolder

Operations

Operations for the bucket resource:

OperationValueDescription
CreatecreateCreate a bucket
DeletedeleteDelete a bucket
Get ManygetAllGet many buckets
SearchsearchSearch within a bucket

Operations for the file resource:

OperationValueDescription
CopycopyCopy a file
DeletedeleteDelete a file
DownloaddownloadDownload a file
Get ManygetAllGet many files
UploaduploadUpload a file

Operations for the folder resource:

OperationValueDescription
CreatecreateCreate a folder
DeletedeleteDelete a folder
Get ManygetAllGet many folders

Parameters

Bucket: Create

ParameterTypeRequiredDefaultDescription
Bucket Name (name)stringYesBucket name (globally unique).
Additional FieldscollectionNo{}Optional settings applied when the bucket is created.
— ACLoptionsNoThe canned ACL to apply to the bucket.
Options: authenticatedRead, Private, publicRead, publicReadWrite
— Bucket Object Lock EnabledbooleanNofalseWhether you want S3 Object Lock to be enabled for the new bucket.
— Grant Full ControlbooleanNofalseWhether to allow grantee the read, write, read ACP, and write ACP permissions on the bucket.
— Grant ReadbooleanNofalseWhether to allow grantee to list the objects in the bucket.
— Grant Read ACPbooleanNofalseWhether to allow grantee to read the bucket ACL.
— Grant WritebooleanNofalseWhether to allow grantee to create, overwrite, and delete any object in the bucket.
— Grant Write ACPbooleanNofalseWhether to allow grantee to write the ACL for the applicable bucket.
— RegionstringNoRegion you want to create the bucket in. By default uses the region from credentials.

Bucket: Delete

ParameterTypeRequiredDefaultDescription
Bucket Name (name)stringYesName of the AWS S3 bucket to delete.

Bucket: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. Accepts 1–500. (shown when Return All is false)
ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the bucket to search within.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. Accepts 1–500. (shown when Return All is false)
Additional FieldscollectionNo{}Optional settings for the search.
— DelimiterstringNoA delimiter is a character you use to group keys.
— Encoding TypeoptionsNoEncoding type used by Amazon S3 to encode object keys in the response.
Options: url
— Fetch OwnerbooleanNofalseWhether to return owner field with each key in the result.
— PrefixstringNoLimits the response to keys that begin with the specified prefix.
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Start AfterstringNoStartAfter is where you want Amazon S3 to start listing from.

File: Copy

ParameterTypeRequiredDefaultDescription
Source PathstringYesThe name of the source bucket and key name, separated by a slash (/). Must start with /.
Destination PathstringYesThe name of the destination bucket and key name, separated by a slash (/).
Additional FieldscollectionNo{}Optional settings applied to the copied object.
— ACLoptionsNoprivateThe canned ACL to apply to the object.
Options: authenticatedRead, awsExecRead, bucketOwnerFullControl, bucketOwnerRead, private, publicRead, publicReadWrite
— Grant Full ControlbooleanNofalseWhether to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
— Grant ReadbooleanNofalseWhether to allow grantee to read the object data and its metadata.
— Grant Read ACPbooleanNofalseWhether to allow grantee to read the object ACL.
— Grant Write ACPbooleanNofalseWhether to allow grantee to write the ACL for the applicable object.
— Lock Legal HoldbooleanNofalseWhether a legal hold will be applied to this object.
— Lock ModeoptionsNoThe Object Lock mode that you want to apply to this object.
Options: governance, compliance
— Lock Retain Until DatedateTimeNoThe date and time when you want this object’s Object Lock to expire.
— Metadata DirectiveoptionsNoSpecifies whether the metadata is copied from the source or replaced.
Options: copy, replace
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Server Side EncryptionoptionsNoThe server-side encryption algorithm used when storing this object.
Options: AES256, aws:kms
— Server Side Encryption AWS KMS Key IDstringNoKMS key ID when using aws:kms encryption.
— Server Side Encryption ContextstringNoSpecifies the AWS KMS Encryption Context.
— Server Side Encryption Customer AlgorithmstringNoSpecifies the algorithm to use when encrypting the object (e.g., AES256).
— Server Side Encryption Customer KeystringNoSpecifies the customer-provided encryption key.
— Server Side Encryption Customer Key MD5stringNoSpecifies the 128-bit MD5 digest of the encryption key.
— Storage ClassoptionsNostandardAmazon S3 storage classes.
Options: deepArchive, glacier, intelligentTiering, onezoneIA, standard, standardIA
— Tagging DirectiveoptionsNoSpecifies whether the object tag-set is copied from the source or replaced.
Options: copy, replace

File: Delete

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
File KeystringYesObject key to delete.
OptionscollectionNo{}Optional settings for the delete.
— Version IDstringNoSpecific version to delete.

File: Download

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
File KeystringYesObject key to download.
Binary PropertystringYesdataName of the output binary field to put the file in. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.

File: Get Many

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. Accepts 1–500. (shown when Return All is false)
OptionscollectionNo{}Optional settings for the listing.
— Fetch OwnerbooleanNofalseWhether to return owner field with each key in the result.
— Folder KeystringNoPrefix to filter by folder. NOTE: file getAll uses Delimiter=”/” so it returns only the current folder level (non-recursive). For a recursive search across the bucket, use the bucket “search” operation instead.

File: Upload

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
Binary FilebooleanNotrueWhether the data to upload should be taken from binary field.
Input Binary FieldstringYesdataThe name of the input binary field containing the file to be uploaded. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Binary File is true)
File NamestringNoIf not set the binary data filename will be used. (shown when Binary File is true)
File NamestringYesKey name for the uploaded object. (shown when Binary File is false)
File ContentstringNoThe text content of the file to upload. (shown when Binary File is false)
Additional FieldscollectionNo{}Optional settings applied to the uploaded object.
— ACLoptionsNoprivateThe canned ACL to apply to the object.
Options: authenticatedRead, awsExecRead, bucketOwnerFullControl, bucketOwnerRead, private, publicRead, publicReadWrite
— Grant Full ControlbooleanNofalseWhether to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
— Grant ReadbooleanNofalseWhether to allow grantee to read the object data and its metadata.
— Grant Read ACPbooleanNofalseWhether to allow grantee to read the object ACL.
— Grant Write ACPbooleanNofalseWhether to allow grantee to write the ACL for the applicable object.
— Lock Legal HoldbooleanNofalseWhether a legal hold will be applied to this object.
— Lock ModeoptionsNoThe Object Lock mode that you want to apply to this object.
Options: governance, compliance
— Lock Retain Until DatedateTimeNoThe date and time when you want this object’s Object Lock to expire.
— Parent Folder KeystringNoParent folder you want to create the file in.
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Server Side EncryptionoptionsNoThe server-side encryption algorithm used when storing this object.
Options: AES256, aws:kms
— Server Side Encryption AWS KMS Key IDstringNoKMS key ID when using aws:kms encryption.
— Server Side Encryption ContextstringNoSpecifies the AWS KMS Encryption Context.
— Server Side Encryption Customer AlgorithmstringNoSpecifies the algorithm to use when encrypting the object.
— Server Side Encryption Customer KeystringNoSpecifies the customer-provided encryption key.
— Server Side Encryption Customer Key MD5stringNoSpecifies the 128-bit MD5 digest of the encryption key.
— Storage ClassoptionsNostandardAmazon S3 storage classes.
Options: deepArchive, glacier, intelligentTiering, onezoneIA, standard, standardIA
TagsfixedCollectionNo{}Tags to apply to the uploaded object.
— KeystringNoThe tag name.
— ValuestringNoThe tag value.

Folder: Create

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
Folder NamestringYesName of the folder to create.
Additional FieldscollectionNo{}Optional settings applied when the folder is created.
— Parent Folder KeystringNoParent folder you want to create the folder in.
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Storage ClassoptionsNostandardAmazon S3 storage classes.
Options: deepArchive, glacier, intelligentTiering, onezoneIA, RecudedRedundancy (Reduced Redundancy), standard, standardIA

Folder: Delete

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
Folder KeystringYesFolder key prefix (e.g., “my-folder/”).

Folder: Get Many

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYesName of the S3 bucket.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. Accepts 1–500. (shown when Return All is false)
OptionscollectionNo{}Optional settings for the listing.
— Fetch OwnerbooleanNofalseWhether to return owner field with each key in the result.
— Folder KeystringNoParent folder prefix to list within.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently. Accepts 1–100.

Output Data

Results are merged onto the input item’s JSON, so the properties you started with remain available. Binary data on the input item is forwarded, and download adds the file to it.

Resource / OperationOutput
Bucket create, Bucket delete, File deleteOne item per input item, carrying success: true.
Bucket getAllFans out — one item per bucket, carrying Name and CreationDate.
Bucket searchFans out — one item per object, carrying Key, LastModified, ETag, Size, StorageClass, plus Owner when Fetch Owner is on.
File copyOne item per input item, carrying LastModified and ETag for the new copy.
File downloadOne item per input item, carrying fileKey, bucketName, contentType and contentLength, with the file attached as binary.
File getAllFans out — one item per object, carrying Key, LastModified, ETag, Size, StorageClass, plus Owner when Fetch Owner is on. Folder markers are filtered out.
File uploadOne item per input item, carrying success: true, key and bucket. A binary upload also carries ETag and multipart, which is true when the file was sent as a multipart upload.
Folder createOne item per input item, carrying success: true.
Folder deleteOne item per input item, carrying deleted — an array of { "Key": … } for every object removed under the prefix.
Folder getAllFans out — one item per folder marker found under the prefix.

When a listing returns nothing, the node still emits one item so the branch does not go silent. That item carries an empty array under a key naming what was listed — buckets, results, files or folders:

{
  "files": []
}

Downloads. The file’s bytes are attached to the output item under the binary property you name in Binary Property (default data), which is what a downstream node such as Knowledge Base or Write to File reads. contentLength and contentType describe the object as S3 reported it.

Uploads. With Binary File on, the node takes the bytes from the named input binary property and, unless you set File Name, reuses that property’s own file name as the S3 key. With Binary File off, it writes the text in File Content to the key in File Name. In both cases Parent Folder Key is prefixed to the key.

Reference results downstream by expression, e.g. {{ $json.Key }} or {{ $json.ETag }}.

Usage Examples

  • Download a file from S3 bucket
  • Upload a PDF to S3
  • List all files in an S3 bucket
  • Copy a file between S3 buckets
  • Create a new S3 bucket
  • Delete an S3 object

Example Configuration

Create a private bucket in a named region:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "bucket",
    "operation": "create",
    "name": "my-workflow-bucket",
    "additionalFields": {
      "acl": "Private",
      "region": "us-east-1"
    }
  }
}

List every bucket the credentials can see:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "bucket",
    "operation": "getAll",
    "returnAll": true
  }
}

Search a bucket recursively under a prefix:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "bucket",
    "operation": "search",
    "bucketName": "my-workflow-bucket",
    "returnAll": false,
    "limit": 200,
    "additionalFields": {
      "prefix": "invoices/2026/",
      "fetchOwner": true
    }
  }
}

Download an object into the data binary property:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "download",
    "bucketName": "my-workflow-bucket",
    "fileKey": "{{ $json.Key }}",
    "binaryPropertyName": "data"
  }
}

Upload a binary file from an upstream node, encrypted and tagged:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "upload",
    "bucketName": "my-workflow-bucket",
    "binaryData": true,
    "binaryPropertyName": "data",
    "fileName": "reports/{{ $json.reportId }}.pdf",
    "additionalFields": {
      "acl": "private",
      "storageClass": "standardIA",
      "serverSideEncryption": "AES256"
    },
    "tagsUi": {
      "tagsValues": [
        { "key": "source", "value": "workflow" },
        { "key": "retention", "value": "90d" }
      ]
    }
  }
}

Upload plain text without any binary input:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "upload",
    "bucketName": "my-workflow-bucket",
    "binaryData": false,
    "fileName": "notes.txt",
    "fileContent": "{{ $json.summary }}",
    "additionalFields": {
      "parentFolderKey": "daily"
    }
  }
}

List the objects at one folder level:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "getAll",
    "bucketName": "my-workflow-bucket",
    "returnAll": true,
    "options": {
      "folderKey": "invoices/"
    }
  }
}

Copy an object between buckets, replacing its metadata:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "copy",
    "sourcePath": "/source-bucket/{{ $json.Key }}",
    "destinationPath": "/archive-bucket/{{ $json.Key }}",
    "additionalFields": {
      "acl": "private",
      "storageClass": "glacier",
      "metadataDirective": "replace"
    }
  }
}

Delete one object, then a whole folder:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "file",
    "operation": "delete",
    "bucketName": "my-workflow-bucket",
    "fileKey": "{{ $json.Key }}"
  }
}
{
  "type": "aws_s3",
  "parameters": {
    "resource": "folder",
    "operation": "delete",
    "bucketName": "my-workflow-bucket",
    "folderKey": "temp/"
  }
}

Create a folder and list the folders under a prefix:

{
  "type": "aws_s3",
  "parameters": {
    "resource": "folder",
    "operation": "create",
    "bucketName": "my-workflow-bucket",
    "folderName": "{{ $json.year }}",
    "additionalFields": {
      "parentFolderKey": "invoices",
      "storageClass": "standard"
    }
  }
}
{
  "type": "aws_s3",
  "parameters": {
    "resource": "folder",
    "operation": "getAll",
    "bucketName": "my-workflow-bucket",
    "returnAll": true,
    "options": {
      "folderKey": "invoices/"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage S3 buckets, files, and folders — upload, download, copy, delete, and list objects in Amazon S3.

Frequently asked questions

What credentials do I need to connect the AWS S3 node?

The node uses BusyBot's built-in AWS credential type. You'll create an AWS credential entry with your Access Key ID and Secret Access Key (and optionally a region and session token for temporary credentials). All requests are signed automatically using SigV4, so no manual request signing is required.

How does file download work — where does the binary data go?

When you download a file, the node attaches the binary data directly to the output item rather than saving it to disk. This means the downloaded file travels through the workflow in memory and can be passed immediately to another node — for example, an email node that sends it as an attachment, or a processing node that reads its contents.

How do I upload a file — does the content have to come from a previous node?

There are two ways to upload. If a previous node produced binary data (such as a generated PDF or a downloaded file), the upload operation can read that binary directly from the upstream item. Alternatively, you can provide plain text content inline without needing an upstream binary source. Both paths write to your specified bucket and key.

Does this node work with S3-compatible services like MinIO or Backblaze B2?

Yes. The description explicitly covers S3-compatible storage services, not just Amazon S3 itself. As long as the service accepts S3-compatible API calls, you can point the node at it using the appropriate endpoint configuration in your AWS credential.

What happens if an operation fails — how do I handle errors?

The node has two separate outputs: Output and Error. If an operation succeeds, the result routes through Output. If it fails — for example, a missing bucket, a permissions error, or a network problem — the item routes through the Error output instead. You can wire the Error output to a notification or retry step rather than letting a single failure halt your entire workflow.

Build with the AWS S3 node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need AWS credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.