Portal Community
  Object Listing vs Folder Listing: Use bucket/search to search broadly across a bucket with a prefix. Use folder/get-many when you know the exact folder path and want paginated contents of that specific directory prefix.

When to Use

Configuration

Connection

FieldRequiredDescription
accessKeyIdRequiredAWS Access Key ID. Store in BizFirst Credentials Manager.
secretKeyRequiredAWS Secret Access Key. Never log or expose.
sessionTokenOptionalSTS session token for temporary credentials.
regionRequiredAWS region where the bucket resides.

Operation Fields

FieldRequiredDescription
bucketNameRequiredName of the S3 bucket to search.
prefixOptionalFilter objects whose keys begin with this string (e.g. reports/2024/). Omit to list all objects in the bucket.
maxKeysOptionalMaximum number of objects to return per page. Default: 1000. Maximum: 1000.
continuationTokenOptionalPagination token from the previous response's nextContinuationToken. Omit for the first page.

Sample Configuration

{
  "connection": {
    "accessKeyId": "{{ $credentials.s3_prod.accessKeyId }}",
    "secretKey": "{{ $credentials.s3_prod.secretKey }}",
    "region": "us-east-1"
  },
  "operation": {
    "resource": "bucket",
    "action": "search",
    "bucketName": "acme-prod-documents",
    "prefix": "reports/2026/05/",
    "maxKeys": 100,
    "continuationToken": "{{ $node.PreviousPage.output.nextContinuationToken }}"
  }
}

Validation Errors

Error CodeCause & Resolution
NoSuchBucketThe specified bucket does not exist or is in a different region. Verify the bucket name and the region in the connection settings.
AccessDeniedThe IAM identity lacks s3:ListBucket on the target bucket. Update the IAM policy to include s3:ListBucket scoped to the bucket ARN.
InvalidTokenThe continuationToken is invalid or expired. Tokens expire if the bucket contents change significantly between pages. Restart pagination from the first page.

Output

Success Port

FieldTypeDescription
statusstringsuccess on successful listing.
errorCodestringEmpty string on success.
bucketNamestringThe bucket that was searched.
objectCountintNumber of objects returned in this page (up to maxKeys).
nextContinuationTokenstringToken for retrieving the next page. Empty string if this is the last page.

Error Port

On failure, activates with errorCode, errorMessage, and httpStatusCode. Handle NoSuchBucket in deprovisioning workflows where the bucket may have already been deleted.

Sample Output

{
  "status": "success",
  "errorCode": "",
  "bucketName": "acme-prod-documents",
  "objectCount": 100,
  "nextContinuationToken": "1ycB9oIe5rD7mVBfqyZ2p4GK8sLx..."
}

Expression Reference

ExpressionResult
{{ $node.SearchBucket.output.objectCount }}Number of objects on this page — use in capacity reports or loop iteration counts.
{{ $node.SearchBucket.output.nextContinuationToken }}Pass to the next bucket/search call to fetch the following page.
{{ $node.SearchBucket.output.bucketName }}Confirm the searched bucket in audit log entries.

Node Policies & GuardRails

Policy AreaRecommendation
Credential StorageStore credentials in BizFirst Credentials Manager. Never hardcode.
IAM PermissionsGrant s3:ListBucket scoped to the specific bucket ARN. Optionally add a condition key s3:prefix to restrict listing to specific prefixes.
Prefix Best PracticeAlways supply a prefix in production workflows — listing entire large buckets is expensive and slow. Scope to the narrowest possible prefix.
Pagination HandlingAlways check nextContinuationToken. If non-empty, the result is paginated — loop the node to fetch all pages before processing.
Token ExpiryContinuation tokens can expire if the bucket is modified between pages. Handle InvalidToken by restarting pagination.
High-Volume BucketsFor buckets with millions of objects, use narrow prefixes and process pages in parallel sub-workflows to avoid timeout issues.
Existence Check PatternTo check if a specific object exists, set prefix to the exact key and maxKeys: 1 — if objectCount == 0, the object does not exist.

Examples

Example 1: Date-Partitioned Batch Processing

A daily workflow lists all files uploaded to the current day's prefix and processes each one in a loop.

// Node: ListTodaysFiles (S3 — bucket/search)
{
  "bucketName": "acme-ingest-landing",
  "prefix": "incoming/{{ $now | date: 'YYYY/MM/DD' }}/",
  "maxKeys": 1000
}
// Node: ProcessFiles (Loop — iterate over object keys)
// Each iteration: object/download → transform → object/upload to processed/

Example 2: Pre-Download Existence Check

Before attempting a download, verify the expected report file exists in S3.

// Node: CheckReportExists (S3 — bucket/search)
{
  "bucketName": "acme-reports",
  "prefix": "monthly/2026-05/summary.pdf",
  "maxKeys": 1
}
// Node: IfExists (If Condition)
// Condition: objectCount > 0
// True: object/download → EmailAttachment
// False: GenerateReport → object/upload → EmailAttachment

Example 3: Paginated Full Bucket Inventory

A storage audit workflow iterates through all pages of a bucket to build a complete object count.

// Initial call: no continuationToken
// Loop while nextContinuationToken != ""
// Each iteration: accumulate objectCount
// Node: SearchPage (S3 — bucket/search)
{
  "bucketName": "acme-archive",
  "maxKeys": 1000,
  "continuationToken": "{{ $node.PreviousSearch.output.nextContinuationToken }}"
}
// Final: sum all objectCounts → send storage report