Academy
⌘K
Getting Started
  • Platform Overview
  • AWS Marketplace Setup
  • Quickstart Guide
Connections
  • Overview
Workflow Builder
  • Overview
  • Nodes Catalog
Helix AI Assistant
  • Overview
Mapping Engine
  • Overview
Workflow Library
  • Overview
  • HL7
  • FHIR
  • Insurance
  • Agentic
  • Mapping
Security & Infrastructure
  • Architecture
  • HIPAA Compliance
  • Performance & Scalability
← Back to ConnectHealth
Get Started
Back to Nodes
AWS1 input → 2 outputs

DynamoDB Scan

payload.tableN… (string)payload.filter… (string)payload.expres… (object)payload.expres… (object)AWSDynamoDB ScanOutput 1payload.items (array)payload.count (number)payload.scanne… (number)Output 2payload.success (boolean)payload.error (string)payload.errorT… (string)Data flowProperty

Reads every item in a DynamoDB table with optional attribute filtering. Appropriate for admin maintenance — finding expired tokens, inactive sessions, or orphaned records. Always prefer DynamoDB Query when you know the partition key.

Inputs

payload.tableName string
Overrides the Table Name set in the node config.
payload.filterExpression string
DynamoDB filter expression, e.g. attribute_exists(#token) AND #exp > :now
payload.expressionAttributeNames object
Attribute name aliases (#token → accessToken).
payload.expressionAttributeValues object
Attribute value aliases (:now → current timestamp).
payload.projectionExpression string
Comma-separated list of attributes to return. Reduces payload size (does not reduce read cost).
payload.nextToken object
Pagination cursor from a previous scan's msg.dynamodb.nextToken.

Outputs

Output 1 — Success
payload.items array
Array of items returned for this page.
payload.count number
Number of items after applying the filter.
payload.scannedCount number
Total items read from the table before filtering (always ≥ count).
dynamodb.nextToken object | null
Pagination cursor. null when all pages have been read.
Output 2 — Error
payload.errorType string
Human-readable error category.
payload.solution string
Suggested fix.

How to Use

  1. Select an AWS config node and enter the Table Name.
  2. Add a Filter Expression via the Visual Builder to narrow results — without a filter the entire table is returned.
  3. Set a Limit to cap the number of items per page, or enable Auto-paginate to collect all pages in one message.
  4. Wire Output 1 to process the items array.

Scan vs Query

Use Scan when scenario
You do not know the partition key, the table is small, or you need an admin export of all data (e.g. finding all expired tokens across all integrations).
Use Query when scenario
You know the partition key — Query uses the index, is faster, and costs less. Always prefer Query in production workflows.

Filter Builder

Add filter rows for any attribute. Each row compiles automatically to a DynamoDB FilterExpression. Filters run after DynamoDB reads the items — you are still charged for reading the full table. Toggle to Advanced for raw expression input with ExpressionAttributeNames and Values.

Examples

Healthcare Admin — Find all expired OAuth tokens:

┌──────────┐   ┌──────────────────┐   ┌──────────────────┐
│ Inject   │──▶│ DynamoDB Scan    │──▶│ Trigger Re-Auth  │
│ (cron)   │   │ expiresAt < now  │   │ for each item    │
└──────────┘   └──────────────────┘   └──────────────────┘
// Visual filter row: attribute=expiresAt, operator=<, value=1714000000
// Or runtime override:
msg.payload = {
    filterExpression: 'attribute_exists(#token) AND #exp < :now',
    expressionAttributeNames: { '#token': 'accessToken', '#exp': 'expiresAt' },
    expressionAttributeValues: { ':now': Math.floor(Date.now() / 1000) },
    projectionExpression: 'id, sk, expiresAt'
};

// Output 1:
msg.payload = {
    items: [
        { id: 'cerner-clinic-B', sk: 'oauth_token', expiresAt: 1710000000 }
    ],
    count: 1, scannedCount: 47
};

Best Practices

  • Always add a filter — without one the entire table is returned to the flow engine.
  • Set a Limit and loop through pages rather than using Auto-paginate on large tables.
  • Use Projection (Advanced mode) to return only the fields you need — reduces payload size and network transfer.
  • If you frequently scan for the same attribute, consider adding a Global Secondary Index so you can use Query instead.