FlowiseAI/Flowise · error · Error

Valid DynamoDB Table selection is required

Error message

Valid DynamoDB Table selection is required

What it means

Thrown in init() when tableName is falsy or equals the ERROR_PLACEHOLDER constant ('error'). The placeholder is used as the option name when loadMethods fails to list DynamoDB tables (see lines 266/317/334/343), so 'error' literally means the dropdown could not be populated. The tool refuses to construct a client against an unknown table.

Source

Thrown at packages/components/nodes/tools/AWSDynamoDBKVStorage/AWSDynamoDBKVStorage.ts:360

                        label: 'Error Loading Tables',
                        name: ERROR_PLACEHOLDER,
                        description: `Failed to load tables: ${error instanceof Error ? error.message : String(error)}`
                    }
                ]
            }
        }
    }

    async init(nodeData: INodeData, _: string, options: ICommonObject): Promise<any> {
        const credentials = await getAWSCredentials(nodeData, options)

        const region = (nodeData.inputs?.region as string) || DEFAULT_AWS_REGION
        const tableName = nodeData.inputs?.tableName as string
        const keyPrefix = (nodeData.inputs?.keyPrefix as string) || ''
        const operation = (nodeData.inputs?.operation as string) || Operation.STORE

        if (!tableName || tableName === ERROR_PLACEHOLDER) {
            throw new Error('Valid DynamoDB Table selection is required')
        }

        // Validate key prefix doesn't contain separator
        if (keyPrefix && keyPrefix.includes(KEY_SEPARATOR)) {
            throw new Error(`Key prefix cannot contain "${KEY_SEPARATOR}" character`)
        }

        const dynamoClient = createDynamoDBClient(credentials, region)

        if (operation === Operation.STORE) {
            return new DynamoDBStoreTool(dynamoClient, tableName, keyPrefix)
        } else {
            return new DynamoDBRetrieveTool(dynamoClient, tableName, keyPrefix)
        }
    }
}

module.exports = { nodeClass: AWSDynamoDBKVStorage_Tools }

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Re-open the node and pick a concrete table from the dropdown — if the dropdown shows an error, fix the underlying AWS credentials/region first.
  2. Grant the credential IAM identity dynamodb:ListTables on '*' so the dropdown populates.
  3. Confirm the chosen region (default us-east-1) is the one where the table was created.
  4. If hand-editing the flow JSON, set inputs.tableName to the exact, case-sensitive table name.

Example fix

// before
if (!tableName || tableName === ERROR_PLACEHOLDER) {
  throw new Error('Valid DynamoDB Table selection is required')
}
// after: also tell the user WHY selection is missing
if (!tableName || tableName === ERROR_PLACEHOLDER) {
  throw new Error(
    `Valid DynamoDB Table selection is required (received "${tableName}" — ` +
    `the dropdown likely failed to list tables; check AWS credentials and region)`
  )
}
Defensive patterns

Strategy: validation

Validate before calling

const ERROR_PLACEHOLDER = 'error'
function assertTableName(tableName: string | undefined): asserts tableName is string {
  if (!tableName || tableName === ERROR_PLACEHOLDER) {
    throw new Error('Pick a concrete DynamoDB table from the dropdown before saving the node.')
  }
}

Type guard

function isValidTableName(name: unknown, badSet = new Set(['', 'error'])): name is string {
  return typeof name === 'string' && !badSet.has(name) && name.length > 0
}

Try / catch

try {
  assertTableName(nodeData.inputs?.tableName)
} catch (e) {
  // surface in the UI: 'Re-select the table; the dropdown may have failed to load.'
  return { error: (e as Error).message }
}

Prevention

When it happens

Trigger: The user left the 'tableName' dropdown empty; the dropdown fell back to 'error' because the ListTables call failed (bad credentials, wrong region, no tables in account); or the flow JSON was hand-edited and tableName was removed.

Common situations: First-time setup with credentials that have no DynamoDB read permission, so the table list never loads and 'error' is saved as the selection; region mismatch where tables exist elsewhere; deploying a flow between environments without recreating the table.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/382004533e1dedf0. Report an issue: GitHub.