Search all guides

Reference · Tools

AWS S3 integration

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.

Works as
Action (binary)
Tool name
aws_s3
Operations
4 — Create , Delete , Get Many , Search
Parameters
44
Outputs
Output, Error
Credentials
AWS
Official docs
AWS S3 docs docs.aws.amazon.com

What you can build with AWS S3

  • 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.

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.

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

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)stringYes—Bucket name (globally unique).
Additional FieldscollectionNo{}Optional settings applied when the bucket is created.
— ACLoptionsNo—The 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.
— RegionstringNo—Region you want to create the bucket in. By default uses the region from credentials.

Bucket: Delete

ParameterTypeRequiredDefaultDescription
Bucket Name (name)stringYes—Name 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)stringYes—Name 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.
— DelimiterstringNo—A delimiter is a character you use to group keys.
— Encoding TypeoptionsNo—Encoding 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.
— PrefixstringNo—Limits the response to keys that begin with the specified prefix.
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Start AfterstringNo—StartAfter is where you want Amazon S3 to start listing from.

File: Copy

ParameterTypeRequiredDefaultDescription
Source PathstringYes—The name of the source bucket and key name, separated by a slash (/). Must start with /.
Destination PathstringYes—The 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 ModeoptionsNo—The Object Lock mode that you want to apply to this object.
Options: governance, compliance
— Lock Retain Until DatedateTimeNo—The date and time when you want this object’s Object Lock to expire.
— Metadata DirectiveoptionsNo—Specifies 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 EncryptionoptionsNo—The server-side encryption algorithm used when storing this object.
Options: AES256, aws:kms
— Server Side Encryption AWS KMS Key IDstringNo—KMS key ID when using aws:kms encryption.
— Server Side Encryption ContextstringNo—Specifies the AWS KMS Encryption Context.
— Server Side Encryption Customer AlgorithmstringNo—Specifies the algorithm to use when encrypting the object (e.g., AES256).
— Server Side Encryption Customer KeystringNo—Specifies the customer-provided encryption key.
— Server Side Encryption Customer Key MD5stringNo—Specifies the 128-bit MD5 digest of the encryption key.
— Storage ClassoptionsNostandardAmazon S3 storage classes.
Options: deepArchive, glacier, intelligentTiering, onezoneIA, standard, standardIA
— Tagging DirectiveoptionsNo—Specifies whether the object tag-set is copied from the source or replaced.
Options: copy, replace

File: Delete

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYes—Name of the S3 bucket.
File KeystringYes—Object key to delete.
OptionscollectionNo{}Optional settings for the delete.
— Version IDstringNo—Specific version to delete.

File: Download

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYes—Name of the S3 bucket.
File KeystringYes—Object 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)stringYes—Name 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 KeystringNo—Prefix 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)stringYes—Name 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 NamestringNo—If not set the binary data filename will be used. (shown when Binary File is true)
File NamestringYes—Key name for the uploaded object. (shown when Binary File is false)
File ContentstringNo—The 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 ModeoptionsNo—The Object Lock mode that you want to apply to this object.
Options: governance, compliance
— Lock Retain Until DatedateTimeNo—The date and time when you want this object’s Object Lock to expire.
— Parent Folder KeystringNo—Parent folder you want to create the file in.
— Requester PaysbooleanNofalseWhether the requester will pay for requests and data transfer.
— Server Side EncryptionoptionsNo—The server-side encryption algorithm used when storing this object.
Options: AES256, aws:kms
— Server Side Encryption AWS KMS Key IDstringNo—KMS key ID when using aws:kms encryption.
— Server Side Encryption ContextstringNo—Specifies the AWS KMS Encryption Context.
— Server Side Encryption Customer AlgorithmstringNo—Specifies the algorithm to use when encrypting the object.
— Server Side Encryption Customer KeystringNo—Specifies the customer-provided encryption key.
— Server Side Encryption Customer Key MD5stringNo—Specifies 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.
— KeystringNo—The tag name.
— ValuestringNo—The tag value.

Folder: Create

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYes—Name of the S3 bucket.
Folder NamestringYes—Name of the folder to create.
Additional FieldscollectionNo{}Optional settings applied when the folder is created.
— Parent Folder KeystringNo—Parent 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)stringYes—Name of the S3 bucket.
Folder KeystringYes—Folder key prefix (e.g., “my-folder/”).

Folder: Get Many

ParameterTypeRequiredDefaultDescription
Bucket Name (bucketName)stringYes—Name 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 KeystringNo—Parent 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 }}.

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

AWS S3 manages buckets, files and folders in Amazon S3 and S3-compatible object storage. It is the right tool when a workflow must upload, download, copy, list or delete objects, or create and delete buckets and folders, rather than work with files on local disk or another cloud drive. It returns object and bucket metadata as JSON items, a downloaded file attached as binary data, and getAll paging through large listings.

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 AWS S3

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 reviewed . Spotted something wrong? Tell us.